Autor Zpráva
Speacker_
Profil *
Dobrý den, mám následující kód


$topic = strstr($text, '[topic:'); // najdu vyraz [topic:

sscanf($topic,"[topic:%d.%d]", &$id, &$poc); // vyseparuju z neho cisla

$pomocna1=array
(
'[topic:'.$id.'.'.$poc.']'
);

$pomocna2=array
(
'<a href="index.php?id='.$id.'&poc='.$poc.'">('.$id.'.'.$poc.')</a>'
);
// prevedu na odkaz
$final=str_replace($pomocna1, $pomocna2, $text);


Tento kód vyseparuje čísla z následujícího řetězce [topic:xx.yy] a vlozi je do odkazu. Toto funuguje bez problému. Problém nastává, když se v řetězci nachází vyrázů [topic:xx.yy] více. Po té se změní na odkaz pouze první výraz a zbytek zůstává v nezměněné formě ([topic:xx.yy]). Proto bych potřeboval poradit, jak kód poupravit, aby to fungovalo i pro několik výrazů [topic:xx.yy] zároveň. Moje metoda pokus - omyl s cyklem bohužel nedopadla zdárně a tak bych potřeboval pomoct. Díky
tiso
Profil
toto sa dá elegantne vyriešiť pomocou funkcie preg_replace() na jeden riadok...
Speacker_
Profil *
A mohl bys mi to prosim ukazat? S regularnimi vyrazy jeste nejsem moc velkej kamarad...
Speacker_
Profil *
To nikdo vazne nevi? Je mi jedno jestli to bude v s tim kodem nahore nebo pres reg.vyrazy, ale uz jsem nad tim stravil pomerne dost casu a porad mi to nejede...
bukaj
Profil
Speacker_
$final = preg_replace('/\[topic:(\d+).(\d+)\]/', '<a href="index.php?id=$1&poc=$2">($1.$2)</a>', $text);
Speacker_
Profil *
Diky moc :D

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: