在mb_ereg_match中执行全局/迭代搜索

时间:2011-08-09 13:28:40

标签: php regex

我实际上尝试重新实现组件的某些功能以提供正确的utf-8支持。是否可以执行全局(迭代)匹配(g修饰符,在preg_match中默认设置它)?

$pattern = 'du\@de\.com';
$whitespacedDude = ' du \@ de\. com  ';
$globalDude = 'a global du@de.com';
$dude       = 'du@de.com';

var_dump(preg_match("/$pattern/", $globalDude, $matches));
var_dump(preg_match("/$whitespacedDude/x", $dude, $matches));

var_dump(mb_ereg_match("$pattern", $globalDude));
var_dump(mb_ereg_match("$whitespacedDude", $dude, 'x'));

给出:

true
true
false // this one should be true
true

实际上,我正在通过mb_ereg_search进行解决方案来模拟全局匹配。还有其他/更好的方法吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

mb_ereg_match仅从头开始测试匹配。您需要更改模式并预先允许任何字符:

var_dump(mb_ereg_match(".*$pattern", $globalDude));