我有一个奇怪的问题。考虑这个简短的代码:
<?php
$reg = '/(?<!\pL)(test)(?!\pL)/u';
$text='This is a test text';
$replace = 'test_replaced';
$newtext = preg_replace($reg, $replace, $text);
echo "Error: ".preg_last_error()."\nResult: ".$newtext."\n";
?>
在某些服务器上,UTF8边界匹配不起作用。我得到了
Error: 0
Result:
在大多数服务器上,一切正常:
Error: 0
Result: This is a test_replaced text
单词边界似乎存在问题,因为当我使用\b
而不是代码有效时。
两台服务器都使用php 5.2.13。什么可能是错误的线索以及如何绕过它?