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 :: Версия для печати :: Помогите с регулярными выражениями
Форумы портала PHP.SU » » Вопросы новичков » Помогите с регулярными выражениями

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

1. eter4 - 01 Февраля, 2013 - 19:44:29 - перейти к сообщению
Ребята, нужно выбрать все формы из HTML-кода. Есть вот такая функция
PHP:
скопировать код в буфер обмена
  1. function GetFormsFromHTML($html){//получаем все формы из выбранного нами HTML-кода
  2.         $pattern = "/^\<[form]{4,}[a-zA-Z0-9]\>[a-zA-Z0-9]\<\/[form]{4,}\>$/";
  3.                        
  4.         preg_match($pattern,$html,$forms);
  5.                        
  6.         return $forms;
  7.         }

Но почему то возвращается пустой массив. Где ошибка?
2. esterio - 01 Февраля, 2013 - 19:48:23 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. preg_match('/<form.*?>(.+?)<\/form>/', $html,$forms);
3. eter4 - 01 Февраля, 2013 - 20:13:57 - перейти к сообщению
esterio пишет:
PHP:
скопировать код в буфер обмена
  1. preg_match('/<form.*?>(.+?)<\/form>/', $html,$forms);

Не получается Недовольство, огорчение
Если
PHP:
скопировать код в буфер обмена
  1. $html = "<div><br><hr><form method="POST" action=""><input type="text"><input type="submit"></form></div><br><hr>"

То все нормально, а если в переменную попадает результат функции file_get_contents() то возвращается пустой массив.
Что делать?
4. jobsdata - 01 Февраля, 2013 - 23:04:00 - перейти к сообщению
если не ошибаюсь file_get_contest() просто читает файл и не возвращает массив. Может использовать просто функцию file() ?
5. eter4 - 01 Февраля, 2013 - 23:19:22 - перейти к сообщению
jobsdata пишет:
если не ошибаюсь file_get_contest() просто читает файл и не возвращает массив. Может использовать просто функцию file() ?

Нет, в данном случае мы читаем HTML код с чужого сайта. И эта функция возвращает HTML код страницы.
Массив мы должны получить функцией
6. DelphinPRO - 01 Февраля, 2013 - 23:28:30 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. preg_match('#<form.*>(.*)</form>#Usi', $html,$forms);
  2. var_dump($forms[0]);

(Добавление)
точнее вот так:
PHP:
скопировать код в буфер обмена
  1. preg_match_all('#<form.*>(.*)</form>#Usi', $html, $forms, PREG_PATTERN_ORDER);
  2. var_dump($forms[0]);
7. eter4 - 02 Февраля, 2013 - 07:20:11 - перейти к сообщению
DelphinPRO пишет:
PHP:
скопировать код в буфер обмена
  1. preg_match('#<form.*>(.*)</form>#Usi', $html,$forms);
  2. var_dump($forms[0]);

(Добавление)
точнее вот так:
PHP:
скопировать код в буфер обмена
  1. preg_match_all('#<form.*>(.*)</form>#Usi', $html, $forms, PREG_PATTERN_ORDER);
  2. var_dump($forms[0]);

Благодарю! Все получилось.

 

Powered by ExBB FM 1.0 RC1