preg_replace の結果がサーバーによって異なるという奇妙な問題があります。次のコードがローカルの wampserver で実行されると:
echo preg_replace('/[\W]+/u', '-', "blāh bl*h");
以下が出力されます。
"blāh-bl-h"
リモートサーバーで実行すると、次のように出力されます。
"bl-h-bl-h"
「あ」も置き換えます。
ローカル wampserver での php インストールは 5.3.13 で、サーバーでは 5.3.3-7+squeeze15 です。これはPHPバージョンのものですか?