String zwischen bestimmten Zeichen verändern

Mr. FISHMAN

Erfahrenes Mitglied
Hallo,

ich habe folgendes Problem:
Ich möchte einen String verändern, aber nicht komplett sondern nur zwischen zwei "Grenzen".

$string = "Hallo Herr Ändernicht, [change]hätten sie kurz Zeit mir zu helfen mit den Käfig?[/change]";

und nun soll nur zwischen [change] und [/change] das ä zu ae,
da man ja zb Namen nicht verändern sollte.

In der Suche hab ich nichts gefunden was mir wirklich weiter hilft.
Vielleicht findet oder wist ihr ja eine Lösung oder könnt mir einen
Denkanstoß geben.

THX schon mal

Grtz MrF

P.S.: das [change],[/change] lösche ich nachher einfach mit str_replace() raus
 
So sollte es auch ohne dem nachträglichen Löschen von [change] per str_replace funktionieren:
PHP:
function changetext($txt) {
  $txt = str_replace("ä", "ae", $txt);
  $txt = str_replace("A", "Ae", $txt);
  $txt = str_replace("ö", "oe", $txt);
  $txt = str_replace("Ö", "Oe", $txt);
  $txt = str_replace("ü", "ue", $txt);
  $txt = str_replace("Ü", "Ue", $txt);

  return $txt;
}

$text = preg_replace("/(\[change])(.*)(\[\/change\])/eisU", "changetext('$2')", $text);

Sollte funktionieren (ungetestet).
 
Nein leider funktioniert das nicht ganz, aber trotzdem erstmal danke.

folgender Fehler:

<b>Warning</b>: Unknown modifier 'c' in <b>/www/htdocs/v029183/page/admin/first.php</b> on line <b>223</b>

[223] $text = preg_replace("/([change])(.*)([/change])/eisU", "changetext('$2')", $text);

als beispiel hab ich folgendes damit versucht zu maskieren:

ä ü [change]ä ü [/change] ä ü

raus kam:

nichts :(

ich weiß nicht genau was die Fehlermeldung bedeutet.

Kann mir einer helfen??


grtz MrF
 
PHP:
$text = preg_replace("/\\[change\\](.*)\\[\\/change\\]/eisU", "changetext('\\$1')", $text);
Die entsprechende Zeile ersetzen, dann sollte es funktionieren. Allerdings auch nicht getestet :)
 
Sorry, das Board hats mal wieder zerhauen. So sollte es gehen:
$text = preg_replace("/(\[change])(.*)(\[\/change\])/eisU", "changetext('$2')", $text)
 
mhm.. das funktioniert nun wunderbar....

ein Fehler noch:

Ergibniss: ä ü ae ue; ä ü

wo kommt das ';' hinter ue her????


grtz MrF
 
oops :) sorry :)

war mein Fehler hatte in der str_replace falsch getippt :|

Also ein super Dankeschön an euch.

hier nochmal die Lösung zusammengefasst:

function changetext($txt) {
$txt = str_replace("ä", "ae", $txt);
$txt = str_replace("A", "Ae", $txt);
$txt = str_replace("ö", "oe", $txt);
$txt = str_replace("Ö", "Oe", $txt);
$txt = str_replace("ü", "ue", $txt);
$txt = str_replace("Ü", "Ue", $txt);

return $txt;
}


$text = preg_replace("/(\[change])(.*)(\[\/change\])/eisU", "changetext('$2')", $text);
 
Zurück