Autor Zpráva
Sylar
Profil
Zdravím,

pracuji s wordpressem, s pluginem qTranslate, který dovoluje multijazyčnost ve WP. Texty jsou uloženy v databázi takto:
<!--:de-->Hello world DE<!--:--><!--:en-->Hello world EN<!--:-->

Snažím se vytvořit regulární výraz který vytáhne jednak označení jazyka - tedy de a en a zároveň samotné texty, tedy Hello world DE a Hello world EN .
Vytvořil jsem toto, ale vůbec nevím jak vyřešit střední část reguláru (.*?), ve které může být v podstatě jakýkoliv znak, kromě sekvence po sobě jdoucích znaků <!--: .
preg_match('/<!--:(a-z){2}-->(.*?)<!--:-->/i', $titulek, $matches);

Může mě prosím někdo popostrčit?
Tori
Profil
1. pro kód jazyka má být ([a-z]{2})
2. funkcí preg_match_all vytáhnete všechny překlady do jednoho pole.
Sylar
Profil
Tori:
díky, upravil jsem, ale v matches se mi zobrazí pouze pole se třemi prázdnými indexy [0], [1] a [2]
peta
Profil
Sylar: Priste zkus napsat cely priklad, jak to mas. Fungujici, uz v prvnim prispevku.
Upravil jsem to podle Tori a zda se, ze to funguje.
<?php
$str = "<!--:de-->Hello world DE<!--:--><!--:en-->Hello world EN<!--:-->";
preg_match_all('/<!--:([a-z]{2})-->(.*?)<!--:-->/i', $str, $matches);
echo '<pre>';
print_r($matches);
?>
Zobrazi se
Array
(
    [0] => Array
        (
            [0] => Hello world DE // puvodni html odpovidajici reg vyrazu <!--:de-->Hello world DE<!--:--> (kdyz si das zobrazit zdrojovy kod stranky v prohlizeci)
            [1] => Hello world EN
        )

    [1] => Array
        (
            [0] => de // zavorka 1
            [1] => en
        )

    [2] => Array
        (
            [0] => Hello world DE // zavorka 2
            [1] => Hello world EN
        )
)
Sylar
Profil
peta:
díky, funguje

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: