我实际上尝试重新实现组件的某些功能以提供正确的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
进行解决方案来模拟全局匹配。还有其他/更好的方法吗?
谢谢。
答案 0 :(得分:1)
mb_ereg_match
仅从头开始测试匹配。您需要更改模式并预先允许任何字符:
var_dump(mb_ereg_match(".*$pattern", $globalDude));