Einzelnen Beitrag anzeigen

Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#1

[php] Mehrere Strings ersetzen schlägt fehl

  Alt 7. Nov 2010, 15:00
Hallo,
Ich habe hier ein für mich unverständliches Problem mit php:

Ich habe eine Variable $line in der z.B. folgendes steht:
Code:
Ob [url=index.php?id=1]1[/url], [url=index.php?id=2]2[/url], [url=index.php?id=3]3[/url]
nun möchte ich alle url-Tags durch entsprechende HTML-Tags ersetzen.
Zuerst also mit einem nur:
PHP-Quellcode:
   $p=strpos($line,"[url=");
   if (($p<>null) or (substr($line,0,5)=="[url="))
   {
   $s=substr($line,$p+5,strpos($line,']')-$p-5);
   $line=str_replace("[url=".$s."]", "<a href=\"".$s."\">", $line);
   }
Super! Es funktioniert, aber jetzt kommt es:

Man sollte ja annehmen das wenn ich das ganze 2x hintereinander schreibe:
PHP-Quellcode:
   $p=strpos($line,"[url=");
   if (($p<>null) or (substr($line,0,5)=="[url="))
   {
   $s=substr($line,$p+5,strpos($line,']')-$p-5);
   $line=str_replace("[url=".$s."]", "<a href=\"".$s."\">", $line);
   }
   $p=strpos($line,"[url=");
   if (($p<>null) or (substr($line,0,5)=="[url="))
   {
   $s=substr($line,$p+5,strpos($line,']')-$p-5);
   $line=str_replace("[url=".$s."]", "<a href=\"".$s."\">", $line);
   }
Der das auch mit dem 2. macht, ist aber nicht so!
Wobei ich doch aber den 1. Tag ersetzt habe wodurch dieser nicht mehr da sein sollte → es wird der nächste gefunden.

da frage ich mich: warum macht der nicht das was man erwartet?

Und: wie kann ich beliebig viele davon ersetzen?
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat