preg_replace

Programovacie jazyky, rady, poradňa...
jurko.info
Medium Expert
Medium Expert
Príspevky: 108
Registrovaný: 22 nov 2006, 0:16
Kontaktovať používateľa:

preg_replace

Príspevok od používateľa jurko.info »

Zdravím,

kde mám, prosím Vás, chybu, že mi do atribútu title tagu img nedáva príslušnú časť poľa titles (atribúty src a alt fungujú):

Kód: Vybrať všetko

$out = "bla bla bla **1** bla bla bla **2** bla bla bla **3** bla bla bla";
$titles = array("1" => "jeden", "2" => "dva", "3" => "tri");

$patt = "/\*\*(\d+)\*\*/"; 
$repl = "<img src=\"$1.gif\" title=\"- ".$titles['$1']."  -\" alt=\"[img $1]\" />";
$out = preg_replace($patt,$repl,$out);
            
echo $out;
Asi by to chcelo dovolenku, nejako mi to v poslednej dobe nemyslí. : o )
Díky.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Problém tam je to .$titles[$1]. (v tom poli sa hľadá hneď a nie až vtedy, keď je nadefinovaná tá premenná $1).

Môžeš vyskúšať. napr niečo takéto:

Kód: Vybrať všetko

<?php
$out = "bla bla bla **1** bla bla bla **2** bla bla bla **3** bla bla bla";
$titles = array("1" => "jeden", "2" => "dva", "3" => "tri");
function get_title($matches)
{
        global $titles;

        return "<img src=\"{$matches[1]}.gif\" title=\"- ".$titles[$matches[1]]." -\" alt=\"[img {$matches[1]}]\" />";
        return "aaa";
}
$patt = "/\*\*(\d+)\*\*/";
echo preg_replace_callback($patt, "get_title", $out);
?>
jurko.info
Medium Expert
Medium Expert
Príspevky: 108
Registrovaný: 22 nov 2006, 0:16
Kontaktovať používateľa:

Príspevok od používateľa jurko.info »

Funguje to, ďakujem. Len som urobil jednu zmenu:

Pole $titles som umiestnil priamo do funkcie get_title, pretože sa inde používať už nebude a upustil som od globals.
Napísať odpoveď