Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с preg_match_all в PHP5
 
 автор: mmm   (30.07.2007 в 13:10)   письмо автору
 
 

У меня возникла проблема с функцией preg_match_all при переходе с PHP4 на PHP5.
Вот такое выражение ищет все формы на странице:
preg_match_all("%<forms+([^>]*)>(.+)(?:<form|</form>|$)%isU",$a,$bb);

В PHP4 все отлично работает,а в PHP5 почему то, если есть не одна форма на странице,а несколько в массиве $bb появляется только одна,первая форма.Ощущение такое ,что функция работает только один раз. В чем может быть проблема ?
Нигде не нашел информации о том, что preg_match_all работает по разному в PHP4 и PHP5.

   
 
 автор: Faraon   (30.07.2007 в 13:56)   письмо автору
 
   для: mmm   (30.07.2007 в 13:10)
 

Да вроде все нормально и на пятерке работает.
Можете посмотреть

<?php
$a
="<form>fddfddf</form>dfdfgd<form>wwwwww</form>";
preg_match_all("%<form+([^>]*)>(.+)(?:<form|</form>|$)%isU",$a,$bb);
 
print_r ($bb);
?>

   
 
 автор: mmm   (30.07.2007 в 14:45)   письмо автору
32.7 Кб
 
   для: Faraon   (30.07.2007 в 13:56)
 

Да, в Вашем примере все работает и на 5. Но вот к примеру в прикрепленном файле есть две формы и в 5 находится только одна,в php4 - две,интересно в чем отличие.

<?php
$handle 
fopen('aaa.txt''r');        
while (!
feof($handle)) {
   
$vns fgets($handle4096);
      
$body[] = $vns;
}
$html_data=implode(' ',$body);
fclose($handle);
preg_match_all("%<form+([^>]*)>(.+)(?:<form|</form>|$)%isU",$html_data,$bb); 
 
print_r ($bb); 
 
?>

   
 
 автор: Faraon   (30.07.2007 в 15:19)   письмо автору
 
   для: mmm   (30.07.2007 в 14:45)
 

Странно, у меня Ваш код на пятерке, нормально работает. Выдает две формы

   
 
 автор: mmm   (30.07.2007 в 16:00)   письмо автору
 
   для: Faraon   (30.07.2007 в 15:19)
 

Интересно,может в настройках что то не так?
Я пробую в ZendStudio-5.5.0. под WinXP.Еще пробовал под VertrigoServ (есть такой пакет ,типа денвера ,только с PHP5). Результат одинаковый.
Может подскажете в какой стороне хоть искать, а то пока даже мыслей никаких.
Спасибо.

Только что проверил еще несколько форм,даже где одна форма на странице PHP5 не берет. Что за наваждение.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования