ListReplace.mac Ver2.11に関しての質問No.00315
コルシカ さん 05/12/29 16:18
 
お世話になります
変換リストによる連続置換   ListReplace.mac  Ver2.11
ありがたく、使用させて頂いております

下記の様なファイルを

$sql = "UPDATE client SET arg_1='$arg_1',arg_2='$arg_2',arg_3='$arg_3',arg_4
='$arg_4',arg_5='$arg_5',arg_6='$arg_6',arg_7='$arg_7',arg_8='$arg_8',arg_9=
'$arg_9',arg_10='$arg_10',arg_11='$arg_11',arg_12='$arg_12',arg_13='$arg_13',
arg_14='$arg_14',arg_15='$arg_15',arg_16='$arg_16',arg_17='$arg_17',arg_18='
$arg_18',arg_19='$arg_19',arg_20='$arg_20' WHERE id=$id";

ここまで

arg_1, あ
arg_2, い
arg_3, う
arg_4, え
arg_5, お
arg_6, か
arg_7, き
arg_8, く
arg_9, け
arg_10, こ
arg_11, さ
arg_12, し
arg_13, す
arg_14, せ
arg_15, そ
arg_16, た
arg_17, ち
arg_18, つ
arg_19, て
arg_20, と
この様な変換リストで変換しますと
$sql = "UPDATE client SET あ='$あ',い='$い',う='$う',え='$え',お='$お',か='$
か',き='$き',く='$く',け='$け',あ0='$あ0',あ1='$あ1',あ2='$あ2',あ3='$あ3',
あ4='$あ4',あ5='$あ5',あ6='$あ6',あ7='$あ7',あ8='$あ8',あ9='$あ9',い0='$い0'
 WHERE id=$id";

この様な変換結果になってしまい、arg_10以降が私の意に反した結果となってしまい
ます
この様に変換したいのですが
$sql = "UPDATE client SET あ='$あ',い='$い',う='$う',え='$え',お='$お',か='$
か',き='$き',く='$く',け='$け',こ='$こ',さ='$さ',し='$し',す='$す',せ='$せ',
そ='$そ',た='$た',ち='$ち',つ='$つ',て='$て',と='$と' WHERE id=$id";
長文すみません以上宜しくお願いします。

[ ]
RE:00315 ListReplace.mac Ver2.11に関しNo.00316
きいろいまふらあ さん 05/12/29 16:51
 
変換リストの並び順で、arg_1とarg_2をarg_20より後ろに持ってくればよいんじ
ゃないでしょうか?

[ ]
RE:00315 ListReplace.mac Ver2.11に関しNo.00317
山紫水明 さん 05/12/29 17:12
 
 コルシカさん,こんにちは。

 この例では,
リストの「arg_1, あ」
によって
arg_1='$arg_1'

あ='$あ'
になるだけではなく,同時に
arg_11='$arg_11'

あ1=$あ1
と変換してしまいます。これを避けるにはリストの順序を工夫すれば,うまくい
くことが多いです。

arg_10, こ
arg_11, さ
arg_12, し
arg_13, す
arg_14, せ
arg_15, そ
arg_16, た
arg_17, ち
arg_18, つ
arg_19, て
arg_20, と
arg_1, あ
arg_2, い
arg_3, う
arg_4, え
arg_5, お
arg_6, か
arg_7, き
arg_8, く
arg_9, け

としてみたらどうでしょう。

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:00316 ListReplace.mac Ver2.11に関しNo.00318
山紫水明 さん 05/12/29 17:18
 
 きいろいまふらあさん,こんにちは。
 どうもわざわざフォローありがとうございます。

>変換リストの並び順で、arg_1とarg_2をarg_20より後ろに持ってくればよいんじ
>ゃないでしょうか?

 そうですね。全部入れ替えなくても,これだけでも足りますね。

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:00316 ListReplace.mac Ver2.11に関しNo.00319
コルシカ さん 05/12/29 17:21
 
きいろいまふらあ さん
早速のご回答ありがとうございました、理由は分かりませんが (^^ゞ,
ご指摘どおりしたら、変換に成功しました、どうもありがとうございました。

[ ]
RE:00317 ListReplace.mac Ver2.11に関しNo.00320
コルシカ さん 05/12/29 17:31
 
おー (^o^) 山紫水明さん、どうもお世話になります
解説どうもありがとうございました
ListReplace.mac Ver2.11良いマクロですね、
とても役立っています、今後とも宜しくお願いします。

[ ]
RE:00318 ListReplace.mac Ver2.11に関しNo.00321
きいろいまふらあ さん 05/12/29 17:51
 
山紫水明さん、ごぶさたしてます。

> どうもわざわざフォローありがとうございます。

でしゃばってしまって失礼しました。

>>変換リストの並び順で、arg_1とarg_2をarg_20より後ろに持ってくればよいんじ
>>ゃないでしょうか?
>
> そうですね。全部入れ替えなくても,これだけでも足りますね。

何が原因かを明らかにするためにあえて変な書き方をしました。

検索元の文字列の長さをチェックして長いものから先に置換していくオプション
なんてあるとよいかもしれないですね(すでにあったらor検討中だったらごめん
なさい)。あくまでオプションで、ということで。


[ ]