我在下面写了一个简单的脚本来模拟我的问题。 我的字符串和模式都包含unicode字符。PHP preg_replace_callback with unicode
基本上,如果我从命令行(php -f test.php)运行它,它会按预期打印“匹配”。 但是,如果我通过网络服务器(Apache,http://localhost/test.php)运行它,它会打印“不匹配”。 我正在使用PHP 5.3。
任何想法为什么它的行为不同? 如何使它通过Web服务器工作?
谢谢。
<?php
function myCallback($matches) {
return $matches[0];
}
$value = 'aaa äää';
$pattern = '/(\bäää)/u';
$value = preg_replace_callback($pattern, 'myCallback', $value, -1, $count);
if ($count > 0) {
echo "match";
} else {
echo 'no match';
}
?>
你发送标头的服务器? – 2012-03-29 21:21:54
没有标题。我手动输入了浏览器地址栏的网址。该字符串不是用户输入,它在PHP脚本中被硬编码。 – Formosan 2012-03-29 21:42:37