как интернационализировать preg_replace (проблемы Windows и Linux) - PullRequest
1 голос
/ 13 декабря 2010

Если я запускаю этот код в windows , он выдает «I! T! Rn! Ti! N! Liz! Ti! N», но если я перемещаю его в мой linux сервер, он больше не выполняет замену.

print preg_replace('/[À-ÖØ-öø-ÿ]/', '!', 'Iñtërnâtiônàlizætiøn');

Я загрузил документ в виде двоичного файла, чтобы убедиться, что причина не в FTP. Я могу читать это хорошо на сервере (без искажения символов). Похоже, это связано с реализацией в Linux preg_replace?

Ответы [ 2 ]

3 голосов
/ 13 декабря 2010

Если вы пытаетесь избавиться от всех не-ascii символов, лучше предоставьте отрицательный список допустимых символов, например что-то вроде [^a-zA-Z0-9] (возможно, придется добавить несколько символов, если вы хотите их тоже) вместо [ä-ö߀AndMuchMoreStuff]

1 голос
/ 13 декабря 2010

Вероятно, это связано с локалью.Но вы все равно должны иметь в регулярном выражении модификатор Unicode /u.- А может ли версия libPCRE для Windows включить ее по умолчанию?

...