Autor Zpráva
Vendy
Profil
Ahoj a dobrý den,
potřebovala bych od vás poradit, jak mám zjednat nápravu. Jeden z pluginů mi vyhazuje chybovou hlášku:
Warning: preg_replace_callback(): Compilation failed: unmatched parentheses at offset 7 in /data/web/virtuals/132505/virtual/www/domains/xn--takyijemsvmi-lbb50t.eu/wp-content/plugins/wp-monalisa/wpml_func.php on line 218

Selským rozumem samozřejmě chápu, že se to týká souboru wpml_func.php daného pluginu, konkrétně řádku 218 a překladač mi našeptává, že jde snad o závorky. Ale jak napravit, na to jsem nepřišla. Můžete mi, prosím, poradit, co mám vlastně přepsat?
Kousek daného kódu přikládám, snad to není ovlivněno něčím ještě výše:
function wpml_convert_emoticons($text)
{
    global $wpml_search;

    // no smilies to change, return original text
    if ( empty($wpml_search) )
        return $text;

    // reset output
    $output = '';

    // taken from wordpress 2.8
    $textarr = preg_split("/(<.*>)/U", $text, -1, PREG_SPLIT_DELIM_CAPTURE);
    // capture the tags as well as in between
    $stop = count($textarr);// loop stuff
    for ($i = 0; $i < $stop; $i++) {
        $content = $textarr[$i];

        if ((strlen($content) > 0)) {
            //      && ('<' != $content{0})) {

            //If it's not a tag
            $content = preg_replace_callback($wpml_search,
                    'wpml_translate_emoticon',
                    $content);
             
        }
        $output .= $content;
    }
    return $output;
}

Ten zmíněný 218 řádek je tento (i v kódu jsem jej označila):
    
                    $content);
             

Předem děkuji za každou dobrou radu, která by vedla k nápravě.
User
Profil *
Bude to něco s regulárnímy výrazy.


wordpress.org/support/topic/compilation-failed-unmatched-parentheses-wpml_funcphp-on-line-218
Vendy
Profil
User:
Bude to něco s regulárnímy výrazy.
S čím že to? Toto slyším/čtu poprvé, ani nevím, co to znamená
User
Profil *
lmgtfy.com/?q=regul%C3%A1rn%C3%AD+v%C3%BDraz+php
Vendy
Profil
User:
Děkuji, budu hledat dál
juriad
Profil
Vendy:
Buď se skutečně jedná o vadnou konfiguraci, jak zmiňuje User v [#2], nebo se jedná o bug.

Na řádku 23 máš funkci preg_replace_callback, která jako první argument vyžaduje regulární výraz. Ty jí předáváš nějakou proměnnou $wpml_search, která obsahuje nějaké znaky, které mají v regulárním výrazu speciální význam. Takovým znakem je například závorka.

Vypiš si obsah té proměnné $wpml_search. Pak by to mělo být jasnější.

Opravit to budeš muset v konfiguraci pluginu. Připadně, pokud plugin používáš způsobem, který autor nezamýšlel, podívej se po místě, kde se tato proměnná nastavuje. Budeš chtít vhodně použít funkci preg_quote. Nebo také můžeš kontaktovat autora pluginu.

User:
Opravdu si myslíš, že odkaz na lmgtfy nějak pomůže?
Vendy
Profil
juriad:
Takovým znakem je například závorka.
Myšleno závorka, jako klasická závorka, tady toto () ? To je asi hloupost, že?
V každém případě na jiném webu plugin používám a není tam problém.... což mi ovšem připomíná, že mě ještě nenapadlo zkusit to porovnat, ale v tom druhém mám už nahránu řadu smajlíků, tak nevím, jak to ovlivní zápis, ale zkusím to zkouknout.
juriad
Profil
Vendy:
Ano, přesně tato závorka. On skoro každý znak, který není písmeno nebo číslo má v regulárním výrazu speciální význam.
Vendy
Profil
juriad:
Zjevně nevím, kam s ní.... zkusila jsem to již i přehrát tím, co vím, že funguje a chyba je stejná. Nerozumím tomu, proč to na jednom místě funguje bez potíží a na druhém ne. A nastavení obou webů je stejné, přesto jeden funguje a druhý je popsaný tou chybou

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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