Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: preg_match utf8 размер обрабатываемых данных
Форумы портала PHP.SU » PHP » Регулярные выражения » preg_match utf8 размер обрабатываемых данных

Страниц (1): [1]
 

1. La5erWind - 20 Марта, 2009 - 09:17:51 - перейти к сообщению
Здравствуйте!

Столкнулся с проблемой

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. Пример во вложении
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)

Спасибо Всем кто просмотрел тему.

Вопрос решен, тему можно закрыть.

 

Powered by ExBB FM 1.0 RC1