[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсер META тегов
SamuraiDV
Хочу с различных сайтов получать значения которые находятся в теге <meta name="Keywords" content=" "> .

Делаю так:

$homepage = file_get_contents('http://www.домен/');
preg_match("%<meta.*name='keywords'.*content='(.*)'\s+/>%U", $homepage, $regs);

echo $regs[1];


Но не со всеми сайтами получается, я бы даже сказал, что со многими!
Если выводить переменную $homepage то страницы тех сайтов выводяться без проблем.

Подскажите пожалуйста, что я делаю не так! :unsure: ))

Заранее примного благодарен!



Спустя 9 минут, 44 секунды (16.01.2011 - 00:47) Arni написал(а):
Возможно ваша регулярка не учитывает пробел. Иногда ключевые слова идут слово, запятая, пробел. А иногда слово, запятая,слово,запятая.

Спустя 10 часов, 59 минут, 8 секунд (16.01.2011 - 11:46) Snus написал(а):
Arni
Так он вроде не каждое слово в отдельности берет, а все целиком?

Спустя 22 минуты, 34 секунды (16.01.2011 - 12:09) Arni написал(а):
Цитата (Snus @ 16.01.2011 - 08:46)
Arni
Так он вроде не каждое слово в отдельности берет, а все целиком?

Да, в регулярке похоже все нормально. Дело мне кажется всего навсего в кавычках. Проверил на нескольких сайтах код автора. Действительно не работает. Чуток переделал.



$homepage = file_get_contents('http://www.домен/');
preg_match('%<meta.*name="keywords".*content="(.*)"\s+/>%U', $homepage, $regs);

print_r($regs);


Работает. :) Просто в штмл документах в метатегах чаще используют ( " " ) а не ( '' )

Спустя 11 минут, 48 секунд (16.01.2011 - 12:21) Snus написал(а):
Arni
А можно сделать как-нибудь, чтоб и с теми кавычками работал и с другими? Мне понравилась идея автора. smile.gif) Удобно для рекламы делать smile.gif

Спустя 19 минут, 21 секунда (16.01.2011 - 12:40) Arni написал(а):
Если долго не думая...


$homepage = file_get_contents('http://www.домен/');
preg_match('%<meta.*name="keywords".*content="(.*)"\s+/>%U', $homepage, $regs);

if(count($regs)){
echo 'Ключевые слова: '; print_r($regs);
}else{
preg_match("%<meta.*name='keywords'.*content='(.*)'\s+/>%U", $homepage, $regs);
if(count($regs)){
echo 'Ключевые слова: '; print_r($regs);
}else{
echo 'Ключевых слов нету!';
}
}


Спустя 10 минут, 9 секунд (16.01.2011 - 12:50) Snus написал(а):
Arni
Я так и знал, что ты такой вариант напишешь smile.gif А как-нибудь регуляркой это изобразить можно?

Спустя 4 минуты, 6 секунд (16.01.2011 - 12:54) SamuraiDV написал(а):
Snus
Как то можно, только я не знаю как!

К сожалению ковычки это не единственная проблема данного кода! smile.gif

1) Это то, что на некоторых сайтах в МЕТА теге нет закрывающего слеша.

2) Это кодировка. Порой вытаскивет непонятные иероглефы.

Спустя 20 минут, 17 секунд (16.01.2011 - 13:15) Arni написал(а):
Ну этот алгоритм надо украсить проверкой на всякие засады это однозначно. Кодировку наверно можно определить если на сайте она указана в заголовках. Это один из вариантов.

Цитата

Arni
Я так и знал, что ты такой вариант напишешь  А как-нибудь регуляркой это изобразить можно?


Ану давай ты блесни smile.gif . Я жуть как нелюблю в регулярках копошиться wink.gif

Спустя 3 минуты, 17 секунд (16.01.2011 - 13:18) Snus написал(а):
Arni
Так я тебе по той же причине вопрос-то и задал. wink.gif

Спустя 1 час, 4 минуты, 17 секунд (16.01.2011 - 14:22) twin написал(а):

Спустя 32 минуты, 6 секунд (16.01.2011 - 14:54) SamuraiDV написал(а):
Цитата (twin @ 16.01.2011 - 11:22)
Сюда пройдемте

Огромнейшее СПАСИБО! Все как всегда: Гениальное - просто! laugh.gif
А то у меня уже со всеми теми обычными проверками на кавычки и слеши кода на 33 сроки получалось.
Быстрый ответ:

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