[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подскажите по регулярке
Master812
Всем привет!
Есть мета-тэги, нужно как-то извлечь их ключи. Читал инструкции по регулярке, но увы так и не понял как её настроить, чтобы она их извлекала.

Пример:
<meta name="description" content="любое описание">

<meta
name="keywords" content="любые слова">

Буду очень признателен, если поможете. Заранее спасибо!
inpost
Master812
Давай посмотрим как ты пытался делать. Покажи свои попытки.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Master812
Цитата (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
Цитата (Master812 @ 20.04.2017 - 20:39)
Подскажете, что здесь не так?

всё не так.
Во первых тут [а-яёА-ЯЁa-zA-Z]> захват только одного символа за которым сразу закрывается угловая скобка.
Во вторых регулярки не самый лучший инструмент для работы с html. Набор атрибутов тега не фиксирован, он может меняться, так же как и их чередование. Кавычки могут быть как двойные, так и одинарные , или отсутствовать вообще. Закрываться тег meta может и так > и так />, в зависимости от версии html и тараканов в голове верстальщика. Пробелы между атрибутами, могут быть любыми пробельными символами, в том числе перевод строки, и в неограниченном количестве.
Если уж делать на регулярках, я бы не стал пытаться делать парсинг атрибутов через один регэксп. Проще вначале отловить нужные теги целиком, и уже в колбекое распарсить его на атрибуты.
Master812
Цитата (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-символов, но это влечёт за собой увеличения объёма базы, что не очень хорошо. Поэтому, лучше их как-то отсеять.
Быстрый ответ:

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