RegEx Verständnisfrage

  • Themenstarter Themenstarter antihero
  • Beginndatum Beginndatum
-

wenn caminus alles weiß
Danke für die Blumen ;-]

Code:
function bla($string){
  $string .= "a";

  return $string;

}
$text = "hallo <lalala>";
$text = preg_replace("=<(.*)>=","<".bla('\\1').">",$text);

echo htmlentities($text);

Funktioniert einwandfrei :)
 
ahhh, scheiss php. frag mich nicht, warum das auch bei mir geht mit dem code den ich da oben gepostet hab...
naja, vielleicht fällts mir ja irgendwann nochmal ein, wie es nicht funktioniert hat...

versteh übrigens das mit dem alles wissen nicht falsch ^^
war nur hierrauf bezogen...

Dazu gehört mehr, um mich zu überfordern
 
Ach ich glaubs einfach nicht... Irgendwie werd ich noch zum "antihero der RegEx's Fragen"... :(

Nachdem mal alles gut lief scheitere ich jetzt wieder und zwar daran:

PHP:
<?php
$string = "was {text:1} wasa";
echo $string;
$datid='2';
$formatedstring = preg_replace("=({text:)/d(})=isU","getText(//2,$datid);",$string);
echo "<br>\n$formatedstring";
?>

Ich bin mir nicht mal sicher ob man das machen kann... :( Naja:
Was der obige Code erreichen sollte
von antihero

Ich versuche die Zeichenkette {text:1} in die Zeichenkette gettext(1,2); umzuwandeln, wobei "2" für eine Variable steht. Und wahrscheinlich sind 95% vom obigen Code falsch... :8 Irgendwie blick ich einfach nicht wo da genau das Problem liegt... Vielen Dank für Hilfe, mindestens Grossmeister (;)) Caminus sollte ja da einen Ausweg kennen... :D

antihero
 
Original geschrieben von antihero
Code:
<?php
$string = "was {text:1} wasa";
echo $string;
$datid='2';
$formatedstring = preg_replace("=({text:)/d(})=isU","getText(//2,$datid);",$string);
echo "<br>\n$formatedstring";
?>
mmh.. also

versuchs mal so:
Code:
$formatedstring = preg_replace("=(\{text:)(\d)(\})=isU", getText(\2,$datid) ,$string);
 
Wieso kann die PHP Error funktion nicht dasselbe wie du? ;)

Vielen Dank, es funktioniert bestens, musste den Quellcode zwar noch ein wenig abändern, aber war nichts wesentliches... (Ich sag das nur damit ihr merkt dass ich nichts kompletter Anfänger bin... ;)) Hier die funktionsfähige Version:

PHP:
$formatedstring = preg_replace("=(\{text:)(\d)(\})=isU", "getText(\\2,$datid)" ,$string);

antihero
 
Mal kurz ne Frage zum ersten Code der hier gepostet wurde (Für den BBCode):
Die Lösung funktioniert einwandfrei, nur gibts Probleme, wenn man die Bold-Tgas verschachtelt!

Ich habs mal mit Konstrukten wie sowas versucht:
PHP:
preg_replace ("=(\[ B\])(^\[ B\] .*)(\[/ B\])=sU", "<b>$2</b>", $text);
abba das will irgendwie net so richtig funktionieren...

Hat dafür jemand ne Lösung (in diesem Board gehts ja auch: Fett und nochwas in bold-tags der rest)

[edit]Oh, bei mir auch dKomplikationen mit BBCode
 
Zuletzt bearbeitet von einem Moderator:
PHP:
$string = preg_replace ("=(\\[ B\\])(.*)(\\[ /B\\])=isU", "<b>\\\\2</b>", $string);

das sollte gehen... ;)

//EDIT: Hab nochmal etwas editiert, wegen ein paar Tippfehlern welche mir erst im nachhinein aufgefallen sind, jetzt sollte das aber funktionieren... Die leerzeichen natürlich weglassen... :)
 
Zuletzt bearbeitet von einem Moderator:
Zurück