PGBox
P
G
Box

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()に指定する数値は
文字数ではなくバイト数である事に注意してください。




正規表現のメニューへ戻る