Простое регулярное выражение для возврата текста из заголовка Wordpress — плагин qtranslate

Я использую плагин qtranslate wordpress для хранения контента блога на нескольких языках. Теперь мне нужно извлечь содержимое из тегов qtranslate.

$post_title  = "<!--:en-->English text<!--:--><!--:it-->Italian text<!--:-->";

Каким будет php-код и регулярное выражение для возврата текста и языка из этой строки?

Большое спасибо!


person Kelvin    schedule 05.12.2009    source источник


Ответы (2)


Попробуйте что-то вроде:

<?php
$post_title  = "<!--:en-->English text<!--:--><!--:it-->Italian text<!--:-->";

$regexp = '/<\!--:(\w+?)-->([^<]+?)<\!--:-->/i';
if(preg_match_all($regexp, $post_title, $matches))
{
    $titles = array();
    $count = count($matches[0]);
    for($i = 0; $i < $count; $i++)
    {
        $titles[$matches[1][$i]] = $matches[2][$i];
    }
    print_r($titles);
}
else
{
    echo "No matches";
}
?>

Отпечатки:

Array
(
    [en] => English text
    [it] => Italian text
)
person Atli    schedule 05.12.2009
comment
Это круто! Работает как шарм :) Отличная работа Атли! Спасибо - person Kelvin; 06.12.2009

Это все блестящие примеры. Однако недавно я обнаружил, что у qTranslate есть собственная функция:

qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($post_title);

Который захватит текущий язык и переключится на значение по умолчанию.

person jphase    schedule 13.09.2012