Ошибка Preg_replace при использовании текста на другом языке.(Избавляемся от линий) - PullRequest
3 голосов
/ 27 июля 2011

У меня есть такой контент

`மிழர்களி வரறில் யூலை மாதம் என்பது கனத்த மாதமாக பதிவு செய்யப்பட்டுள்ளது.

 குறிபாக ஐந்து ஆண்ளின் யூலை கள் முக்கியமானவை. 1983ம் ஆண்டிற்கு முன்பே 

யூலை மாதம் தமிழர்களுடன் பின்னிப் பிணைந்து` 

Я хочу избавиться от всех строк, чтобы я получил что-то вроде этого.

மிழர்களி வரறில் யூலை மாதம் என்பது கனத்த மாதமாக பதிவு செய்யப்பட்டுள்ளது. குறிபாக ஐந்து ஆண்ளின் யூலை கள் முக்கியமானவை. 1983ம் ஆண்டிற்கு முன்பே குறிபாக ஐந்து ஆண்ளின் யூலை கள் முக்கியமானவை. 1983ம் ஆண்டிற்கு முன்பே 

Я использую этот код preg_replace("/\n+||\r+/"," ", $content);но проблема в том, что у меня вывод:

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

Я также пробовал mb_ereg_replace, но я получаю те же результаты.Когда я использую это preg_replace("/\n+||\r+/","", $content);, тогда это нормально, но проблема в том, что мне нужно пространство между текстом, поэтому вместо новой строки мне нужен пробел.Я также попробовал seriallize.Заранее спасибо.

1 Ответ

4 голосов
/ 27 июля 2011

preg_replace работает побайтово, если вы не пропустите флаг U. И ваше регулярное выражение не только заменяет символы новой строки пробелами, но и вставляет пробел между каждым байтом, поскольку он соответствует пустой строке. Что нарушает кодировку UTF-8.

Возможно, вы хотели использовать вместо регулярного выражения что-то вроде '/[\r\n]+/'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...