Reguläre Ausdrücke: Probleme mit Ersetzen
benni.
- php
Auf meiner Homepage (dvd.wopc.de - World of PC) habe ich einen String, der nachher so angezeigt wird:
Pierce Brosnan (James Bond)
Sophie Marceau (Elektra King)
Robert Carlyle (Renard)
Denise Richards (Dr. Christmas Jones)
Robbie Coltrane (Valentin Zukovsky)
Judi Dench (M)
Desmond Llewelyn (Q)
John Cleese (R)
Der String:
$darsteller = "Pierce Brosnan (James Bond)<br>Sophie Marceau (Elektra King)<br>Robert Carlyle (Renard)<br>Denise Richards (Dr. Christmas Jones)<br>Robbie Coltrane (Valentin Zukovsky)<br>Judi Dench (M)<br>Desmond Llewelyn (Q)<br>John Cleese (R)";
Nun will ich, dass die Schauspielernamen (also die Namen ausserhalb der Klammern) mit einem Link versehen werden, also so:
<a href="dvd_suche.php?darsteller=Pierce+Brosnan">Pierce Brosnan</a> (James Bond)....
Natürlich ist das bei jedem Namen und jeder Seite anders, wer kann also helfen, denn ich krieg das mit ereg_replace nicht auf die Reihe.
Vielen Dank schon im Voraus,
Benjamin Mack
Hallo Benni,
ereg_replace ist dafür auch nicht das richtige Mittel.
$darsteller = "Pierce Brosnan (James Bond)
Sophie Marceau (Elektra King)
Robert Carlyle (Renard)
Denise Richards (Dr. Christmas Jones)
Robbie Coltrane (Valentin Zukovsky)
Judi Dench (M)
Desmond Llewelyn (Q)
John Cleese (R)";
Wenn du die Schauspieler schon in einer Variablen abspeicherts dann doch am besten gleich als array in der Form:
$darsteller = array("Pierce#Brosnan#James Bond", "Sophie#Marceau #Elektra King",...);
oder als assoziertes Array in der Form:
$darsteller = array("Pierce Brosnan" => "James Bond",...);
Jetzt kannst du das array in einer Schleife durchspulen und mit:
$schauspieler = split("#",$darsteller[$schleifenzähler]) zerlegen
<a href="dvd_suche.php?darsteller=Pierce+Brosnan">Pierce Brosnan</a> (James Bond)....
der Link könnte dann so aussehen:
<a href="dvd_suche.php?darsteller=".$schauspieler[0]."+".$schauspieler[1]">".$schauspieler[0]." ".$schauspieler[1]."</a>"....
genauer ist das unter www.php3.net nachzulesen
SolOng
Stephan
Uuups, sorry der Link heisst: http://www.php.net und lässt sich jetzt auch anklicken.
SolOng
Stephan
Hallo Stephan!
ereg_replace ist dafür auch nicht das richtige Mittel.
Wenn du die Schauspieler schon in einer Variablen abspeicherts dann doch am besten gleich als array in der Form:
$darsteller = array("Pierce#Brosnan#James Bond", "Sophie#Marceau #Elektra King",...);
oder als assoziertes Array in der Form:
$darsteller = array("Pierce Brosnan" => "James Bond",...);
Das Problem ist, dass das in einer MySQL - db drin ist und somit sehr schwer zu ändern ist.
Ich hab gehört, dass ereg_replace das schon machen könnte, oder nicht ?
Hi,
ereg_replace ist dafür auch nicht das richtige Mittel.
Warum? ereg_replace ist dafür genau das richtige Mittel, bzw.
ereg_replace in Verbindung mit ereg.
also, erstmal die Var:
$darsteller = "Pierce Brosnan (James Bond)<br>blalba (wasweissich welcher Film)<br>....";
OK, als erstes muessen wir den String parsen, damit wir wissen,
welcher Schauspieler in den Link soll:
if(ereg("(.*) (.*)",$darsteller,$regs))
{
// Dann die Ergebnisse durchgehen und den Text durch den
// Link ersetzen
for($i=1;$i<=count($regs);$i++)
{
$href = ereg_replace(" ","+",$regs[$i]);
$link = "<a href="dvd_suche.php?darsteller=$href">".$regs[$i]."</a>";
$darsteller = ereg_replace($regs[$i],$link,$darsteller);
}
}
echo $darsteller;
So sollte es eigentlich klappen ,)
mfg
CK1
Erst einmal Danke an euch beide für die Hilfe, aber ich habe den String mithilfe von explode zerlegt, ist zwar ein wenig umständlich aber praktisch.
Wer genau wissen will, wie - einfach mailen