Master812
20.04.2017 - 16:42
Всем привет!
Есть мета-тэги, нужно как-то извлечь их ключи. Читал инструкции по регулярке, но увы так и не понял как её настроить, чтобы она их извлекала.
Пример:
<meta name="description" content="любое описание">
<meta name="keywords" content="любые слова">
Буду очень признателен, если поможете. Заранее спасибо!
inpost
20.04.2017 - 17:06
Master812Давай посмотрим как ты пытался делать. Покажи свои попытки.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Master812
20.04.2017 - 20:39
Цитата (inpost @ 20.04.2017 - 17:06) |
Master812 Давай посмотрим как ты пытался делать. Покажи свои попытки. |
inpost, вот:
$meta = '<meta name="description" content="Описание сайта"><meta name="keywords" content="слово 1, слово 2"><meta name="Resource-type" content="document">
<meta name="Robots" content="index,follow">';
$regexp = '/<meta name="description" content="[а-яёА-ЯЁa-zA-Z]>/i';
$match = array();
$result = preg_match($regexp, $meta, $match);
var_dump($result);
print_r($result);
Подскажете, что здесь не так?
killer8080
20.04.2017 - 21:18
Цитата (Master812 @ 20.04.2017 - 20:39) |
Подскажете, что здесь не так? |
всё не так.
Во первых тут [а-яёА-ЯЁa-zA-Z]> захват только одного символа за которым сразу закрывается угловая скобка.
Во вторых регулярки не самый лучший инструмент для работы с html. Набор атрибутов тега не фиксирован, он может меняться, так же как и их чередование. Кавычки могут быть как двойные, так и одинарные , или отсутствовать вообще. Закрываться тег meta может и так > и так />, в зависимости от версии html и тараканов в голове верстальщика. Пробелы между атрибутами, могут быть любыми пробельными символами, в том числе перевод строки, и в неограниченном количестве.
Если уж делать на регулярках, я бы не стал пытаться делать парсинг атрибутов через один регэксп. Проще вначале отловить нужные теги целиком, и уже в колбекое распарсить его на атрибуты.
Master812
20.04.2017 - 22:46
Цитата (killer8080 @ 20.04.2017 - 21:18) |
Цитата (Master812 @ 20.04.2017 - 20:39) | Подскажете, что здесь не так? |
всё не так. Во первых тут [а-яёА-ЯЁa-zA-Z]> захват только одного символа за которым сразу закрывается угловая скобка. Во вторых регулярки не самый лучший инструмент для работы с html. Набор атрибутов тега не фиксирован, он может меняться, так же как и их чередование. Кавычки могут быть как двойные, так и одинарные , или отсутствовать вообще. Закрываться тег meta может и так > и так />, в зависимости от версии html и тараканов в голове верстальщика. Пробелы между атрибутами, могут быть любыми пробельными символами, в том числе перевод строки, и в неограниченном количестве. Если уж делать на регулярках, я бы не стал пытаться делать парсинг атрибутов через один регэксп. Проще вначале отловить нужные теги целиком, и уже в колбекое распарсить его на атрибуты.
|
killer8080, нужные символы я отловить могу без проблем ещё на этапе создания веб-странице, так как я пишу свой двиг сам. Но проблема в том, что если пользователь моего движка в будущем захочет отредактировать эту страницу, а они все записываются в один столбец в MySQL для увеличения скорости, который так и называется "meta". При создании к ключам добавляется <meta name="description" content=" и <meta name="keywords" content=" и следовательно при редактировании вместе с ключами выводятся и эти html-тэги.
Надо как-то отсеять их от ключей. Конечно, можно сделать в движке второй столбец, куда будут записываться только ключи без html-символов, но это влечёт за собой увеличения объёма базы, что не очень хорошо. Поэтому, лучше их как-то отсеять.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.