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

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

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

 

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

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

тема: Рег. выражение теряет тег </a>
 
 автор: dmitrii_r   (27.10.2006 в 16:55)   письмо автору
 
 

С помощью рег. выражения

$pattern1 = "#<a class=\"news18\">(.+)<\/a>(.+)<br><br><br>#si";
preg_match($pattern1, $contents, $out1);
$post_title = $out1[1];
$post_text = $out1[2];


Обрабатываю сграбленный текст, он передается через $post_text = $out1[2];:


<a class="news18">Украина: сине-белые ослы против оранжевых</a><br>
                   <p><img src="http://site.ru/images/medium-osliki-2410.jpg" 
border="0" alt=" " hspace="5" width="190" height="140" align="left" />В стране сала и 
горилки решили <a href=http://www.interfax.ru/r/B/0/0.html?id_issue=11608521
 target="_blank"><u>возродить</u></a><a 
href="http://www.interfax.ru/r/B/0/0.html?id_issue=11608521"></a> один древний вид спорта… 



При этом теряется тег </a> после второй ссылки, здесь: «</a> один древний вид…»

Не могу понять, в чем причина. Помогите, пожалуйста.

   
 
 автор: kasmanaft   (27.10.2006 в 20:57)   письмо автору
 
   для: dmitrii_r   (27.10.2006 в 16:55)
 

В первую скобку (.+) у вас попал текст

Украина: сине-белые ослы против оранжевых</a><br> 
                   <p><img src="http://site.ru/images/medium-osliki-2410.jpg"  
border="0" alt=" " hspace="5" width="190" height="140" align="left" />В стране сала и  
горилки решили <a href=http://www.interfax.ru/r/B/0/0.html?id_issue=11608521 
 target="_blank"><u>возродить</u></a><a  
href="http://www.interfax.ru/r/B/0/0.html?id_issue=11608521">

Потому, что php сейчас жадный (иль не жадный хз ... наверное все же жадный... ), нужно использовать модификатор жадности:

$pattern1 = "#<a class=\"news18\">(.+?)<\/a>(.+)<br><br><br>#si";
// либо
$pattern1 = "#<a class=\"news18\">(.+)<\/a>(.+)<br><br><br>#siU";

   
 
 автор: dmitrii_r   (28.10.2006 в 02:06)   письмо автору
 
   для: kasmanaft   (27.10.2006 в 20:57)
 

Спасибо, kasmanaft. Модификатор U сработал. Текст берется из второй скобки, причем в отдельных случаях на других техстах с тегом </a> работал и прежний вариант рег.выражения. Мой опыт с рег.выражениями мал, наверное, практикуя в дальнейшем, с подобными "не понятными" глюками придется экспериментировать с жадностью скобок ("карманов") или всего шаблона.

   
Rambler's Top100
вверх

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