リファレンストップへ PHP | mb_ereg_search_setpos使用した環境 PHP 5.2.13 正規表現の検索開始位置を設定します。通常、以下のように繰り返しの検索を行った場合 mb_language('Japanese'); mb_internal_encoding('UTF-8'); mb_regex_encoding('UTF8'); $str = "あいう0えおか1きく2け3こ"; $reg = "([0])|([1])"; mb_ereg_search_init($str, $reg); while ($arr = mb_ereg_search_regs()) { var_dump($arr); echo "<br />"; } var_dump(mb_ereg_search_regs()); 正規表現の検索開始位置は文字列の終端まで来ているため、 再度mb_ereg_search_regs()を呼び出した所で、何も結果を得る事はできません。 そのため、このサンプルの結果は以下のようになります。 array(3) { [0]=> string(1) "0" [1]=> string(1) "0" [2]=> bool(false) } array(3) { [0]=> string(1) "1" [1]=> bool(false) [2]=> string(1) "1" } bool(false) 最後のmb_ereg_search_regs()でエラーである事を示すfalseが返されています。 ですが、以下のように、whileによる検索終了後にmb_ereg_search_setpos()を呼び出すことで mb_language('Japanese'); mb_internal_encoding('UTF-8'); mb_regex_encoding('UTF8'); $str = "あいう0えおか1きく2け3こ"; $reg = "([0])|([1])"; mb_ereg_search_init($str, $reg); while ($arr = mb_ereg_search_regs()) { var_dump($arr); echo "<br />"; } mb_ereg_search_setpos(10); var_dump(mb_ereg_search_regs()); 以下のように、検索開始位置の調整を行った上で再度検索を行う事ができます。 array(3) { [0]=> string(1) "0" [1]=> string(1) "0" [2]=> bool(false) } array(3) { [0]=> string(1) "1" [1]=> bool(false) [2]=> string(1) "1" } array(3) { [0]=> string(1) "1" [1]=> bool(false) [2]=> string(1) "1" } mb_ereg_search_setpos()に指定する数値は 文字数ではなくバイト数である事に注意してください。 |
|