Регулярка для meta name robots

Рейтинг: 0Ответов: 1Опубликовано: 28.11.2014

Имеем вот такую регулярку:

'#<meta\s*name\s*=\s*["\']robots["\']\s*content\s*=\s*["\'](.*?)["\']\s*/>#si'

Отлично отрабатывает для

<meta name="robots" content="all" />

но возникают проблемы для

<meta name="robots" content="all">

или <meta name="robots" content="all" >

Подскажите, как поправить для обработки обоих вариантов? Про get_meta_tags знаю - не подходит.

Ответы

▲ 1

1. Скачиваем и подключаем Symfony/Crawler и Symfony/CSS-Selector

wget https://getcomposer.org/composer.phar -O composer
php composer require symfony/dom-crawler:* symfony/css-selector:*

2. Подключаем Crawler в проект

<?php

require __DIR__ . '/vendor/autoload.php';

use Symfony/Component/DomCrawler/Crawler;

3. Используем по назначению

$crawler = new Crawler($html);
$metaRobots = $crawler->filter('meta[name="robots"]');
if ($metaRobots->count()) {
    $content = $metaRobots->first()->attr('content');
}