Autor Zpráva
hary28
Profil
ahoj, mám takovej problém napsal jsem si script kterej kterej mi text roztrhá a text kterej je mezi značkami [code][/code] provede přes htmlspecialchars(); ale toto mi funguje pokud se vtextu nacházejí značky pouze jednou, ale pokud se nacházejí víckrát, tak to veme první [code] a pak až poslední [/code] v textu. Tahle to být ale nemá. Doufám že jste s čím mám problé a pomůžete mi ho vyřešit.

            
            $text = '<p>AAA text</p>
[code]
<?php 
<p>AAA text</p>
$nazev = date("Y-m-d_H-i-s"); // aktuální datum, který poté použijeme k přejmenování souboru, aby nemohlo dojít ke dvoum stejným názvům
if (is_uploaded_file($_FILES[\'file\'][\'tmp_name\'])){
    $kon = explode('.',$_FILES[\'file\'][\'name\']);
    $kon = $kon[count($kon)-1];

    move_uploaded_file($_FILES[\'file\'][\'tmp_name\'], "files/" . $nazev . "." . $kon);
    echo \'Soubor byl úspěšně nahrán na server.\';
}else{
    echo \'Někde nastala chyba!\';
}
?>[/code] 
<p>A toto je další text, který nemá být procpát htmlspecialchars():</p>
[code]
<?php 
<p>AAA text</p>
$nazev = date("Y-m-d_H-i-s"); // aktuální datum, který poté použijeme k přejmenování souboru, aby nemohlo dojít ke dvoum stejným názvům
if (is_uploaded_file($_FILES[\'file\'][\'tmp_name\'])){
    $kon = explode('.',$_FILES[\'file\'][\'name\']);
    $kon = $kon[count($kon)-1];

    move_uploaded_file($_FILES[\'file\'][\'tmp_name\'], "files/" . $nazev . "." . $kon);
    echo \'Soubor byl úspěšně nahrán na server.\';
}else{
    echo \'Někde nastala chyba!\';
}
?>[/code]';

// Callback funkce pro preg_replace_callback
function my_htmlspecialchars($matches)
{
    return htmlspecialchars($matches[0]);
}

$text = preg_replace('/\n/', '*nl*', $text);
$text = preg_replace_callback('/\[code\](.*)\[\/code\]/i', 'my_htmlspecialchars', $text); // převede obsah [code] na htmlspecialchars
$text = preg_replace('/(\[code\]|\[\/code\])/i', '', $text); // Odstraní [code]
$text = preg_replace('/\*nl\*/i', '<br />', $text);


echo $text;
Keeehi
Profil
$text = preg_replace_callback('/\[code\](.*?)\[\/code\]/i', 'my_htmlspecialchars', $text); // převede obsah [code] na htmlspecialchars


Mohl by jsi mi prosím říci, jaký je význam těchto dvou řádků? (Mám takový pocit, že by to šlo napsat lépe)
$text = preg_replace('/\n/', '*nl*', $text);
..
..
$text = preg_replace('/\*nl\*/i', '<br />', $text);
hary28
Profil
Keeehi:
díky to bylo ono nemohl jsem na to za boha přijít :) :)

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:

0