|
A1 と申します。横から失礼します。
> >strstrですが、第3引数を追加して、検索開始位置を指定できないでしょうか?
> 現状でhmjre.dllを使わずにやるとしたら、midstrなどでいったん別の変数にして
> 対策できるのではないかと思います。
strstr() 関数に加えて、 midstr() 関数の第 3 引数を省略可にして
midstr($s, #i) // $s の #i 文字目から後ろ全部
と記述できると有難いのですが…
例: $s = midstr("abcde", 2); // $s == "cde"
--↓-動機-------------------------------------------------------------------
-----------
strstr() を適用しながら midstr() で切り出すことは時々ありますが、
「残り全部」というのを文字数で指定しなければならない為、
(以下の) (2),(3) の様なズルをすることがありました。
(1) midstr($s, #i, strlen($s)-#i); // 多分、本来の書き方($s と #i
を2回評価)
(2) midstr($s, #i, strlen($s)); // 反則(正しく動作するがヘン。$
s が2回)
(3) midstr($s, #i, 9999); // 反則(文字列変数の最大長に依存)
「変数の評価」が曲者で、マクロ中では(配列を使うなどして)変数の数が
多くなる程個々の変数へのアクセスが遅くなる、という特徴があります。
なので、 "strlen($s)" よりもその場で評価できる "9999" といった
数値で「決め打ち」するという、行儀の悪いことになっていました。
--↑------------------------------------------------------------------------
-----------
perl の substr() の様なものです。(ネタでも構いませんので)ご検討をお願いし
ます。
|
|