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

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

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

 

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

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

тема: Регулярные выражение, парсер атрибутов тега
 
 автор: Volodja   (12.09.2009 в 14:34)   письмо автору
 
 

Пытаюсь получить значения атрибутов href и title тега <a ..
Пример, даны ссылки одной строкой: <a href="2">телевидение</a> <a title="Привет3" href="3">интернет</a> <a href="4" title="Привет4">о компании</a> <a href="5" title="Привет5">главная</a> <a href="6" title="Привет6">вакансии</a>

preg_match_all("!<a[^>]+href=\"?'?([^ \"'><]+)\"?'?[^>]*(?:title=\"?'?([^ \"'><]+)\"?'?|(?:[^>]*))[^>]*>([^<>]*?)</a>!is",$fastlink,$arrfastlink);


получается



    [0] => Array 
        ( 
            [0] => <a href="2">телевидение</a> 
            [1] => <a title="Привет3" href="3">интернет</a> 
            [2] => <a href="4"  title="Привет4">о компании</a> 
            [3] => <a href="5"  title="Привет5">главная</a> 
            [4] => <a href="6"  title="Привет6">вакансии</a> 
        ) 

    [1] => Array 
        ( 
            [0] => 2 
            [1] => 3 
            [2] => 4 
            [3] => 5 
            [4] => 6 
        ) 

    [2] => Array 
        ( 
            [0] =>  
            [1] =>  
            [2] =>  
            [3] =>  
            [4] =>  
        ) 

    [3] => Array 
        ( 
            [0] => телевидение 
            [1] => интернет 
            [2] => о компании 
            [3] => главная 
            [4] => вакансии 
        ) 

)


Не могу получить title

  Ответить  
 
 автор: heed   (12.09.2009 в 15:26)   письмо автору
 
   для: Volodja   (12.09.2009 в 14:34)
 

Это что-то такое , если я правильно понял
<?
$fastlink
=<<<TXT
 <a href="hr2">телевидение</a> 
 <a title="Привет3" href="hr3">интернет</a>
 <a href="hr4" title="Привет4">о компании</a>
 <a href="hr5" class=c1 title="Привет5">главная</a>
 <a href="hr6" title="Привет6">вакансии</a>
TXT
;

$grain '["\']?([^\s"\'>]+)["\']?';
$re '!<a\s[^>]*href='
    
$grain .'(?:[^>]*title='
    
$grain .')?[^>]*>([^<]*)</a>!i';

preg_match_all($re,$fastlink,$arrfastlink);
print_r($arrfastlink);
?>

но чтобы извлечь title там где оно впереди href
нужно хотябы что-то такое
$re = '["\']?([^\s"\'>]+)["\']?';
$re = '!<a\b(?=[^>]*href='
    . $re .')(?:[^>]*title='
    . $re .')?[^>]*>([^<]*)</a>!i';

хотя тоже '["\']?([^\s"\'>]+)["\']?' не сработает во всех возможных вариантах содержимого например
title , там могут быть и пробелы, и кавычки (эскапированные если они как ограничивающие)
, и > тоже может быть

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

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