kostenloser Webspace werbefrei: lima-city


Ersetzungsfehler mit den bösen Regex

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    chatter

    Kostenloser Webspace von chatter

    chatter hat kostenlosen Webspace.

    Ich habe eine Funktion die eine MySQL-Abfrage in ein einfaches Wort umwandelt. Das Problem ist nur dass die Umwandlung nicht funktioniert. Weder mit ereg, preg, oder str_replace geht was, auch nicht mit # bei den Regex-Funktionen. Ich hasse Regex und versuche die so gut wie möglich zu vermeiden oder zumindest so einfach wie es geht, nur diesmal fällt mir nichts leichtes ein.

    Hinweis: das "; am Anfang und das echo " am Ende müssen so bleiben weil die Abfrage zwischen einem Text ist und der dafür kurz beendet wird.

    $text = ereg_replace ('#";$sql = "SELECT Anzeige FROM ".$dbp."bereiche ORDER BY Sortierer ASC"; $ergebnis = mysql_query($sql); while ($row = mysql_fetch_object($ergebnis)) { echo "<option>".$row->Anzeige."</option>"; }echo "#', '{seiten}', $text);


    Nur am Anfang und am Ende der Parameter werden einfache ' benutzt.
    (Anführungszeichen werden beim Zitieren-Button richtig dargestellt.)
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hmm naja die Funktion ereg_replace ist eigentlich für reguläre Ausgrücke gedacht und nicht dass du dort Strings angibst. Zum Bsp. kannst du mit ereg_replace Strings ersetzen, wo du das Format weißt, allerdings den Inhalt nicht...zum Bsp. bei Webadressen!

    Für Quelltextersetzungen, wie du sie hier vor hast würde ich str_replace() bzw. str_ireplace() nehmen.

    Allerdings mußt du immer im Suchenden String die Zeilenumbrüche auch so angeben wie du sie im Matchcode hast. Sonst wird nix gefunden. Alternativ kannst du deine Strings auch verkürzen und mehrmals ersetzen.

    <?php
        $match = '#";
      $sql = "SELECT Anzeige FROM ".$dbp."bereiche ORDER BY Sortierer ASC"; 
      $ergebnis = mysql_query($sql); 
      while ($row = mysql_fetch_object($ergebnis))
      {
        echo "<option>".$row->Anzeige."</option>";
      }
      echo "#';
      
        $text = 'irgendwelcher Text davor' . $match . ' irgendwelcher Text danach';
    
      $ergebnis = str_replace($match, '{seiten}', $text);  
    
    ?>



    Grüßle
  4. Autor dieses Themas

    chatter

    Kostenloser Webspace von chatter

    chatter hat kostenlosen Webspace.

    Für was die Funktionen sind ist mir schon klar. Benutze normalerweise auch immer str_replace. Nur ging das diesmal nicht, deswegen habe ich mal die Regex Funktionen probiert. Das in mehreren Schritten umwandeln wäre vielleicht eine Möglichkeit. Werde ich mal ausprobieren. Melde mich dann wieder

    EDIT: In mehreren Schritten umwandeln funktioniert. Ich weiß zwar nicht warum es beim ganzen Code nicht geht aber einzeln schon.

    Für interessierte noch der neue Code:

    $text = str_replace ('";$sql = "SELECT Anzeige FROM ".$dbp."bereiche ORDER BY Sortierer ASC"; ', '{seite1}', $text);
          $text = str_replace ('$ergebnis = mysql_query($sql); ', '{seite2}', $text);
          $text = str_replace ('while ($row = mysql_fetch_object($ergebnis)) { echo "<option>".$row->Anzeige."</option>\n"; }echo "', '{seite3}', $text);
          $text = str_replace ('{seite1}{seite2}{seite3}', '{seiten}', $text);


    Beitrag geändert: 6.8.2007 13:13:02 von chatter
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!