Problem mit ereg()

Mr. FISHMAN

Erfahrenes Mitglied
gelöst: An eine bestimmte URL einen bestimmten String anhängen

Hallo,

ich habe versucht eine Funktion zu schreiben die an bestimmte Links im Quellcode Parameter anhängt.

Die Funktion wird so aufgerufen:
PHP:
$text = preg_replace("/(\\href=\\")(.*)(\\")/eisU", "addStyleUrl('$2')", $text);

Die Funktion:
PHP:
function addStyleUrl($txt)
{
 echo 1; #Funktion aufgerufen
 if(ereg("main\\.php$",$txt) | ereg("sub\\.php$",$txt))
 {
  echo 2; #Link auf main.php/sub.php gefunden
  if(!ereg("styleurl$",$txt))
  {
    echo 3; #Link hat das Parameter noch nicht
    if(!ereg("\\?$",$txt))
    {
         echo 4; #einzelnes Parameter angefügt
         $txt.= "?styleurl";
    }
    else
    {
         echo 5; #weiteres Parameter angefügt
         $path = explode("?",$txt);
         $txt = $path[0]."?styleurl".$path[1];
    }
  }
 }
 $txt = "href=\"$txt\"";
 return $txt;
}

Das Problem ist nun aber wenn ich 2 Links eingebe:
Code:
<a href="main.php">ohne Parameter</a>
<a href="main.php?test=1">mit Parameter</a>
werden die Links folgender Maßen erstellt:
ohne Parameter -> main.php?styleurl
mit Parameter -> main.php?test=1

was ist an der Funktion falsch???
es kann der Fehler ja nur bei 4 oder 5 liegen
 
Zuletzt bearbeitet:
Hi Leutz,

also ich hab jezze noch bisserl rumgebastelt aber es will nicht :|
kann mir denn keiner helfen?

was is daran falsch...????

und kann mir ma einer erklären was dieses eisU in
")(.*)(\")/eisU", "addStyleUrl
bedeutet? hab die Syntax aus einem Buch :( nur da is nicht erklärt


grtz MrF
 
Juhu ich hab es gelöst :)

der Fehler war das $ im ereg- pattern

hier der neue code:
PHP:
function addStyleUrl($txt)
{
 #echo 1; #Funktion aufgerufen
 if(eregi("main\.php",$txt) | eregi("sub\.php",$txt))
 {
  #echo 2; #Link auf main.php/sub.php gefunden
  if(!eregi("styleurl",$txt))
  {
    #echo 3; #Link hat das Parameter noch nicht
    if(!eregi("\?",$txt))
    {
         #echo 4; #einzelnes Parameter angefügt
         $txt.= "?styleurl";
    }
    else
    {
         #echo 5; #weiteres Parameter angefügt
         $path = explode("?",$txt);
         $txt = $path[0]."?styleurl".$path[1];
    }
  }
 }
 $txt = "href=\"$txt\"";
 return $txt;
}
 
Zurück