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

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

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

 

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

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

тема: достать значение из тега <span>
 
 автор: DEM   (06.03.2013 в 14:33)   письмо автору
 
 

Делаю так:
preg_match_all('#<span style="position: relative; top: 2px;">([\s\S]+)</span>#', $q, $arr);

Если у нас в тексте только (все переносы строки сохранены)
<span style="position: relative; top: 2px;">

    Какой-то текст

                        </span>


Тогда он нормально достаёт текст. А если у нас целая HTML-страница, то он почему-то и в $arr[0] и в $arr[1] помещает весь код страницы после КАКОЙ-ТО ТЕКСТ (в первом случае начиная с <span style="position: relative; top: 2px;">, а во втором начиная с КАКОЙ-ТО ТЕКСТ)

В чём может быть проблема?

  Ответить  
 
 автор: Slo_Nik   (06.03.2013 в 16:31)   письмо автору
 
   для: DEM   (06.03.2013 в 14:33)
 

попробуйте изменить ([\s\S]+) на ([^<]+)
возможно надо применить модификатор U

  Ответить  
 
 автор: Deed   (06.03.2013 в 16:59)   письмо автору
 
   для: DEM   (06.03.2013 в 14:33)
 

preg_match_all("/<span style=\"position: relative; top: 2px;\">(.+?)<\/span>/Us", $q, $arr);

У Вас открывающие кавычки почему-то одинарные, а закрывающие - двойные. Это раз.
Второе. Мод. U применяется в случае, если кодировка страниц в utf-8.
Мод. s применяется, если в ожидаемой строке могут быть переносы строк.

  Ответить  
 
 автор: Slo_Nik   (06.03.2013 в 17:14)   письмо автору
 
   для: Deed   (06.03.2013 в 16:59)
 

>>>Второе. Мод. U применяется в случае, если кодировка страниц в utf-8.
если бы была не заглавная буква, а маленькая "u", тогда Вы правы
А если "U", то модификатор инвертирует "жадность" квантификаторов, т.е. они становятся "нежадными" по умолчанию и "жадными" если предшествуют символу " ?"

Автору вопроса, неплохо было бы показать исходную страницу...

  Ответить  
 
 автор: Deed   (06.03.2013 в 18:01)   письмо автору
 
   для: Slo_Nik   (06.03.2013 в 17:14)
 

Биг падн. Естественно: preg_match_all("/<span style=\"position: relative; top: 2px;\">(.+?)<\/span>/us", $q, $arr);

  Ответить  
Rambler's Top100
вверх

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