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 :: Где я поворачиваю не туда?

 PHP.SU

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


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

> Без описания
pps88
Отправлено: 17 Мая, 2015 - 16:25:36
Post Id



Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Май 2015  


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




Вот что на входе:
Цитата:
<span class=\"itemprop\" itemprop=\"name\">Home</span>\r\n<span>(II)</span>\r\n<span class=\"nobr\">(<a href=\"/year/2015/?ref_=tt_ov_inf\"\r\n>2015</a>)</span>

Из этого мне нужно получить: Home и II
Регуляркой получаю, мне подходит - далее могу поиском-заменой удалить не нужное:
Цитата:
Home</span>\r\n<span>(II)</span>\r\n

Вот что делаю далее:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $a = '<span class=\"itemprop\" itemprop=\"name\">Home</span>\r\n<span>(II)</span>\r\n<span class=\"nobr\">(<a href=\"/year/2015/?ref_=tt_ov_inf\"\r\n>2015</a>)</span>';
  3. $pattern = '/">(.*?)<span class=\\"nobr\\">/';
  4.  
  5. $result = preg_match($pattern, $a, $matches);
  6. echo "Matches: $result<br>";
  7. print_r($matches);
  8.  

На выходе:
Цитата:
Matches: 0
Array ( )

Я только залез в этот удивительный мир регулярных выражений но пока не получил то что мне надо. Подскажите куда копать?
 
 Top
MAXUS
Отправлено: 17 Мая, 2015 - 20:36:20
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


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




/^<span[^>]*>\s*([^<]*)\s*<\/span>[^<]*<span[^>]*>\s*([^<]*)\s*<\/span>/i

Попробуй. Не проверял, но должно сработать.
 
 Top
pps88
Отправлено: 17 Мая, 2015 - 20:45:48
Post Id



Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Май 2015  


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




MAXUS спасибо, работает. Нужно учить матчасть.
 
 Top
pps88
Отправлено: 19 Мая, 2015 - 09:07:11
Post Id



Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Май 2015  


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




Покопался я в регулярках, немного понял - но есть то чего не могу понять.

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $a = '<span class=\"itemprop\" itemprop=\"name\">Веселi нiжки 2</span>\r\n<span class=\"nobr\">(<a href=\"/year/2011/?ref_=tt_ov_inf\"\r\n>2022</a>)</span>\r\n\r\n<br/>';
  3. $pattern_1 = ('#[>]([-:,A-Za-z0-9А-Яа-яIVXLC\s]*)[<][\/][s]#');
  4. preg_match($pattern_1, $a, $matches_1);
  5. $real_name = $matches_1[1];
  6.  
  7. echo "<pre>";
  8. print_r($real_name);
  9. echo "</pre>";
  10.  


В онлайн редакторах регулярок показывает нужную мне строку - "Веселi нiжки 2"
Но при обработке preg_match результатом является "2022" - оно тоже подходит по условию, но находится после нужной информации в строке. И насколько понимаю регулярки делают выборку слева-направо, при preg_match до первого результата. В чем я не прав?
 
 Top
Panoptik
Отправлено: 19 Мая, 2015 - 12:09:49
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




Цитата:
IVXLC
вот это лишнее в паттерне, оно попадает в диапазон A-Z
далее всю эту фигню A-Za-z0-9А-Яа-я я обычно заменяю на \w ну или можно исхитриться и искать все кроме символа начала тега то есть
Цитата:
>([^<]+)<

и не хватает модификатора для юникода (кирилические символы) то есть после последней # нужно добавить u
ну и вообще убрать лишние круглые скобки вокруг паттерна

(Отредактировано автором: 19 Мая, 2015 - 12:11:28)



-----
Just do it
 
 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