[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярные выражение, парсер атрибутов тега
Syfer
Пытаюсь получить значения атрибутов 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>


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





PHP

    [
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] => 
            
[1] => 
            
[2] => 
            
[3] => 
            
[4] => 
        


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

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


)


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



Спустя 1 час, 50 минут, 15 секунд (12.09.2009 - 01:13) FatCat написал(а):
Потом будете спрашивать о нагрузке на сервер?
http://phpforum.ru/index.php?showtopic=20844

Спустя 11 часов, 40 минут, 25 секунд (12.09.2009 - 12:53) Syfer написал(а):
Я не спрашиваю вас о нагрузке. Пытаюсь разобраться с регулярным выражением, как правильно распарсить атрибуты - не получается с title. Неужели никто не может помочь, есть кто-нибудь здесь кто разбирается в регулярных выражениях?

Спустя 5 часов, 55 минут, 6 секунд (12.09.2009 - 18:48) kirik написал(а):
Одной регуляркой не знаю как (точнее знаю, но очень тупо получается), вот скрипт:
PHP
header('Content-Type: text/plain; charset=utf-8');

$data '<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([^>]+)>(.*)</a>#iU'$data$out);
$links = array();
for(
$i 0$c count($out[1]); $i $c$i++)
{
    if(!
preg_match('/href=(["\'])(.+)\\1/iU'$out[1][$i], $href))
        
$href[2] = null;
    if(!
preg_match('/title=(["\'])(.+)\\1/iU'$out[1][$i], $title))
        
$title[2] = null;
    
$links[] = array(
        
'link' => $out[2][$i],
        
'href' => $href[2],
        
'title' => $title[2]
    );
}

print_r($links);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.