Autor Zpráva
Fisak
Profil
Dobrý den. Rád bych udělal funkci kterou bych vždy protáhl text a ten text by se předělal podle toho jaké skripty bych tam spustil.
např.:
function text_plugins($text, $string)
{

require($string);
echo $text;

//$text ve fci by určoval jaký text má změnit
//$string by byl seznam pluginů jaký by se měli použít
}

echo text_plugins($text, "www");

//opět vyvolal by se text v proměnné $text a použil by se plugin který by byl uložen ve složce "plugins/www.php"
//tento plugin by například změnil url v textu na odkaz. Rád bych ale věděl jak udělat to abych mohl sputit více takovýchto pluginů najednou
//např.:

echo text_plugins($text, "www;bold;black_list");

//opět v textu změní všechny url na odkazy a pak např. některá slova na tučná a black_list by změnil sprostá slova na ***.

Dal by mi prosím někdo nějakou radu jak načíst více takovýchto modulů najednou. Jestli to např. nejde takto: echo text_plugins($text, array('www', 'bold', 'black_list'); A jak by měla vypadat zhruba taková struktura toho skriptu který by byl právě uložen např. "plugins/www.php"

Našel jsem zde skript který mění url v textu na odkazy:

$slovo = split("[[:blank:]]+", $text); 

for ($y = 0; $y < count($slovo); $y++) 
{ 
    if (eregi("^(www\..+\..{2,4}/?.*)", $slovo[$y])) { //jedna se odkaz typu www...  

        $odkaz = eregi_replace("^(www\..+\..{2,4}/?.*)", "<a href=\"http://\\1\" target=\"_blank\">\\1</a> ", $slovo[$y]); 

    } elseif (eregi("^([fh]{1}[t]{1,2}[p]?[s]?://.+\..{2,4}/?.*)", $slovo[$y])) { //jedna se odkaz typu http://...,ftp://... nebo https://...  

        $odkaz = eregi_replace("^([fh]{1}[t]{1,2}[p]?[s]?://.+\..{2,4}/?.*)", "<a href=\"\\1\" target=\"_blank\">\\1</a> ", $slovo[$y]); 

    } elseif (eregi("^(mailto:.+@.+\..{2,4})", $slovo[$y])) {
     
        $odkaz = eregi_replace("^(mailto:(.+@.+\..{2,4}))", "<a href=\"\\1\" target=\"_blank\">\\2</a> ", $slovo[$y]); 

    } else { 
        
        $odkaz = $slovo[$y] . " "; //jedna se o normalni slovo 

    } 

    $zprava .= $odkaz; //spojime vsechny slova opet dohromady 

} 

return $zprava; 

Předem děkuji za odpovědi.
Alphard
Profil
Tak funkce lze volat dynamicky buď přímo, nebo přes call_user_func(), takže nevidím problém. Seznam funkcí se buď předá v poli, nebo rozparsuje z řetězce a pak se proběhne cyklem.
PS: ereg* nepoužívat.

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: