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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: preg_match utf8 размер обрабатываемых данных

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
La5erWind
Отправлено: 20 Марта, 2009 - 09:17:51
Post Id



Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Март 2009  
Откуда: New York, USA


Помог: 0 раз(а)




Здравствуйте!

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

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. Пример во вложении
Скачать файл: test_preg.php
Скачан раз: 290

(Отредактировано автором: 20 Марта, 2009 - 09:18:09)

 
 Top
Stierus Супермодератор
Отправлено: 20 Марта, 2009 - 15:11:06
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




В настоящее время UTF-8 в PHP используется при помощи PCRE с модификатором u и расширения mbstring, предоставляющего аналоги основных функций PHP для работы со строками (strlen -> mb_strlen и проч.). Просто, как с обычными строками, с Utf-8 не получится работать (по крайней мере, в 5-й версии php )
 
My status
 Top
La5erWind
Отправлено: 20 Марта, 2009 - 16:10:37
Post Id



Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Март 2009  
Откуда: New York, USA


Помог: 0 раз(а)




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)

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

Вопрос решен, тему можно закрыть.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB