私は奇妙な問題があります。 UTF8境界マッチングが機能しない一部のサーバーで一部のサーバで正規表現の単語境界がut8で機能しない
<?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";
?>
:この短いコードを検討してください。
Error: 0
Result: This is a test_replaced text
私は\b
代わりに、コードの動作を使用するときのように単語境界に問題が発生しました:私は、すべてが正常に動作する多数のサーバーで
Error: 0
Result:
を取得します。
どちらのサーバも、PHP 5.2.13を使用しています。何が間違っているかもしれないし、それを回避するための手掛かりはありますか?
これに '\ b'を使用してみませんか?いくつのサーバーがありますか? 2つ以上? – SilentGhost
\ bはUTF8で動作しません。私は2つのサーバー上の問題を持っています(数百のうち) – freediver
これはおそらく[PHP 5.3.4で修正されたバグ](http://stackoverflow.com/a/41074513/5527985) –