Делаю так:
$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
А можно сделать как-нибудь, чтоб и с теми кавычками работал и с другими? Мне понравилась идея автора.
) Удобно для рекламы делать
А можно сделать как-нибудь, чтоб и с теми кавычками работал и с другими? Мне понравилась идея автора.


Спустя 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
Я так и знал, что ты такой вариант напишешь
А как-нибудь регуляркой это изобразить можно?
Я так и знал, что ты такой вариант напишешь

Спустя 4 минуты, 6 секунд (16.01.2011 - 12:54) SamuraiDV написал(а):
Snus
Как то можно, только я не знаю как!
К сожалению ковычки это не единственная проблема данного кода!
1) Это то, что на некоторых сайтах в МЕТА теге нет закрывающего слеша.
2) Это кодировка. Порой вытаскивет непонятные иероглефы.
Как то можно, только я не знаю как!
К сожалению ковычки это не единственная проблема данного кода!

1) Это то, что на некоторых сайтах в МЕТА теге нет закрывающего слеша.
2) Это кодировка. Порой вытаскивет непонятные иероглефы.
Спустя 20 минут, 17 секунд (16.01.2011 - 13:15) Arni написал(а):
Ну этот алгоритм надо украсить проверкой на всякие засады это однозначно. Кодировку наверно можно определить если на сайте она указана в заголовках. Это один из вариантов.
Цитата |
Arni Я так и знал, что ты такой вариант напишешь А как-нибудь регуляркой это изобразить можно? |
Ану давай ты блесни


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

Спустя 1 час, 4 минуты, 17 секунд (16.01.2011 - 14:22) twin написал(а):
Спустя 32 минуты, 6 секунд (16.01.2011 - 14:54) SamuraiDV написал(а):
Цитата (twin @ 16.01.2011 - 11:22) |
Сюда пройдемте |
Огромнейшее СПАСИБО! Все как всегда: Гениальное - просто!

А то у меня уже со всеми теми обычными проверками на кавычки и слеши кода на 33 сроки получалось.