Здравствуйте!
Столкнулся с проблемой
1) Есть текст в UTF8
2) Есть регулярка
if (preg_match_all('|\{%(.+)%\}(.+)\{%/\\1%\}|Uusix', $html1.$html2, $matches)) {
die ("found");
}
die ("not_found");
3) Не обрабатывает, если текст "большой". Для наглядности разбил текст на два куска. По отдельности, куски обрабатываются, вместе нет. Кто что скажет?
p.s. Та же ерунда и с preg_match.
p.s.2. Пример во вложении
1. La5erWind - 20 Марта, 2009 - 09:17:51 - перейти к сообщению
2. Stierus - 20 Марта, 2009 - 15:11:06 - перейти к сообщению
В настоящее время UTF-8 в PHP используется при помощи PCRE с модификатором u и расширения mbstring, предоставляющего аналоги основных функций PHP для работы со строками (strlen -> mb_strlen и проч.). Просто, как с обычными строками, с Utf-8 не получится работать (по крайней мере, в 5-й версии php )
3. La5erWind - 20 Марта, 2009 - 16:10:37 - перейти к сообщению
Stierus пишет:
В настоящее время UTF-8 в PHP используется при помощи PCRE с модификатором u и расширения mbstring, предоставляющего аналоги основных функций PHP для работы со строками (strlen -> mb_strlen и проч.). Просто, как с обычными строками, с Utf-8 не получится работать (по крайней мере, в 5-й версии php )
Да, знаю, читал. Но как раз с этим проблем-то и нет
Подсказали dklab'овцы
C помощью этого, тестить ошибки:
http://www.php.net/manual/tw/fun...g-last-error.php
И заглядывать иногда в документацию:
http://www.php.net/manual/en/pcr....recursion-limit
Ибо от версии к версии все таки появляются изменения.
А решил задачу сам, примерно "осознав" как работают бэктрэки с тем что я написал в запросе. Вот правильное решение:
preg_match_all('|\{%(.{1,50})%\}(.+)\{%/\\1%\}|Uusix', $html1.$html2, $matches)
Спасибо Всем кто просмотрел тему.
Вопрос решен, тему можно закрыть.