Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > preg_match_all в php5 находит только одно совпаден


Автор: cude 12.3.2008, 10:27
При переезде на php5 возникла проблема с регулярным выражением.

Код

preg_match_all('#(<form[^>]*> )(.{20,}?)(?:<form|</form|$)#si', $body, $res)


php5 находит только одну форму, а php4 все. Видимо какая то фича, в мане ее нет, в гугле тоже не нашел (точнее встретился один человек с такой же проблемой, но его просто на ман слили).

Автор: Feldmarschall 12.3.2008, 10:45
Никаких отличий в регулярных выражениях на пятой версии нету.

Что, часто приходится хостинги менять?

Автор: cude 12.3.2008, 11:10
> Никаких отличий в регулярных выражениях на пятой версии нету.
значит баг

>Что, часто приходится хостинги менять?
намек понял, это не то что ты думаешь  smile  Это парсер форм, использую для автоматической корректировки ставок на яндекс.директ.

Автор: mishaSL 12.3.2008, 13:18
cude, скажите вашу версию PHP.
И покажите html по которому вы ищете этим регулярных выражением.

Автор: anurbol 13.3.2008, 15:20
Может в других формах меньше 20 символов? smile  Print_r($res) выводит одно совпадение?

Автор: xoptov 3.7.2011, 16:09
Та же проблема! При выполнение простого кода
Код

<?php
preg_match_all("/a/i","sdkfjhskhdaasdhagasdasdasdasdasdasdasdasd",$mch);
print count($mch);
?>

Выводит количество элементов в массиве всего 1.
А выражение то плевое.... Что опять на php4 переходить что ли?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)