Ergebnis 1 bis 4 von 4

Thema: [PHP]ereg_replace(): Text wird nicht ersetzt.

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    [PHP]ereg_replace(): Text wird nicht ersetzt.

    Meinereiner hat folgendes Problem. Ich lasse per ereg_replace einen String nach bestimmten zeichen durchsuchen die wie folgt aussehen: <%hierKannWasBeliebigesStehen%>

    Und diese lass ich dann ersetzen durch einen anderen String. (ereg_replace("<%hierKannWasBeliebigesStehen%>", "Huhu :-)", $String);

    Das funktioniert auch sobald ich bekannte Strings ersetze. Was aber wenn nun ein <% %> im String ist, von dem er nicht wei� wie er es ersetzen soll. So m�chte ich dies einfach vom Text ausgeschlossen haben. Jedoch gibt es da ein paar kleine Probleme.

    Denn angenommen wir haben folgenden Code:
    PHP-Code:
    $String "aj aksdfj <b><%jojo%>jfja<%jo%></b>";
    $String ereg_replace("<%.*%>"""$String);
    echo 
    $String//Ausgabe: aj aksdfj <b></b> 
    Jedoch m�chte ich nicht diese Ausgabe, sondern lediglich, dass die Zwei <% %> verschwinden. Jedoch wie? In einem RegEx Tutorial hab ich gelesen, dass \b einen Ancher setzt, so dass nur Wortwei�e gel�scht wird, jedoch passiert bei mir da gar nix.

  2. #2
    Ich weiß zwar nicht so genau, was du willst, aber villeicht ist das dein Problem:
    PHP-Code:
    $String "aj aksdfj <b><%jojo%>jfja<%jo%></b>";
    $String ereg_replace("#<%(.*)%>#U""\\1"$String);
    echo 
    $String//Ausgabe: aj aksdfj <b>jojojfjajo</b> 
    Wenn du ein U hinter deine RegExp schreibst, werden nur minimale Übereinstimmungen gefunden, heisst es geht nicht vom ersten <% bis zum letzten %>

  3. #3
    Die Ausgabe, die laut dir rauskommen sollte ist zwar die, die ich will, jedoch wird sie nicht ausgegeben, die <%jojo%> werden weiterhin angezeigt.

  4. #4
    Sorry, war ungetestet. Hier mal eine korrigierte Version:
    PHP-Code:
    $String "aj aksdfj <b><%jojo%>jfja<%jo%></b>";
    preg_match_all("#<%(.*)%>#U"$String$ergebnissePREG_SET_ORDER);
    foreach(
    $ergebnisse as $ergebnis)
      
    $String str_replace("<%".$ergebnis[1]."%>"$ergebnis[1], $String);
    echo 
    $String//Ausgabe: aj aksdfj <b>jojojfjajo</b> 
    Das Problem ist, das bei den ereg-Sachen die PCRE-Modifiers nicht berücksichtigt zu werden scheinen. Das heisst, man kann dem Teil nicht sagen, es soll nicht so gierig sein Also muss imo eine kompliziertere Version her...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •