PHP preg_match между тегами с PHP-логикой внутри - PullRequest
1 голос
/ 25 февраля 2011

У меня есть сценарий динамического создания карты сайта, который рекурсивно просматривает файловую систему и при необходимости открывает начало файла, а затем ищет текст между тегами.Это работало, когда настройка была похожа на ...

<title>Page Title | Company, Inc.</title>

Но теперь я добавил складку и настроил способ управления заголовками и метаинформацией с помощью инструмента администратора.На случай, если что-то не введено, я хочу вернуться к старой информации о заголовке по умолчанию, но мой preg_match не работает для этого ...

<title><?=@$page_meta_array['page_title']!=''?$page_meta_array['page_title']:"Default Title Here";?> | Company, Inc.</title>

Функция php, которую я передаю страницечтобы это выглядело так ...

function get_title($filename) {
    $retval = "";
    $handle = fopen($filename, "r");
    $head = fread($handle, 4096);
    preg_match(";<title>(.+)</title>;", $head, $matches);
    if(sizeof($matches) == 2) {
        $retval = trim($matches[1]);
    }
    fclose($handle);

    return $retval;
}

Может кто-нибудь указать мне правильный preg_match?Я хотел бы, чтобы "Заголовок по умолчанию здесь" возвращался из второго примера выше.

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 февраля 2011

сначала нужно проанализировать код PHP, а затем проверить совпадения.Почему бы вам просто не использовать содержимое $ page_meta_array ['page_title']?

0 голосов
/ 25 февраля 2011

это может сделать это:

preg_match(';<title><\?[^>]*"([^"]*)"[^>]*></title>;', $head, $matches);

обратите внимание, что короткие теги устарели и могут не работать в PHP6.

...