MyBB.de Forum

Normale Version: Zeichen in String ersetzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Wie kann ich in einem String ein bestimmtes Zeichen durch ein anderes ersetzen?

Dabei geht es um Suchbegriffe:
Ich will dass aus:
"Test1 Test2" Test3 Test4
folgendes wird:
%Test1 Test2%Test3%Test4%

Die genaue Ausarbeitung mach ich dann schon selbst ich bräuchte bloß nen Ansatz für die Zeichenersetzung...

Frank
Wie wäre es mit str_replace oder mit preg_replace?
Wenn ich des richtig weiß kann ich damit nur bestimmte Zeichen durch andere ersetzen. Ich muss aber je nachdem ob das Leerzeichen zwischen "" steht oder nicht anders ersetzen.

"Test1 Test2" -> Test1 Test2
Test1 Test2 -> Test1%Test2

Ich hoffe es ist klar was ich meine...
Da würde ich es auch mit preg_replace() versuchen. Du kannst ja erst per str_replace alle Leerzeichen durch % ersetzen und dann durch einen regulären Ausdruck die Leerzeichen zwischen "..." wiederherstellen.
Das mit dem regulären Ausdruck versteh ich nicht ganz.

Erst:
str_replace(" ", "%", $search);

und wie muss das preg_replace dann aussehen?

Kann ich nicht den String Zeichen für Zeichen durchgehen? Wäre das nicht einfacher?
Ich habe mal was gebastelt, bei mir gehts:
PHP-Code:
<?php
// Teststring
$string "ich bin \"ein text\" zum testen der \"funktion!";

// Leereichen durch % ersetzen
$string str_replace(" ""%"$string);

// Leerzeichen zwischen "" wiederherstellen
$string preg_replace_callback('#"(.*)"#Uis'create_function('$matches''return make_spaces($matches[1]);'), $string);

// String ausgeben
echo $string;

// Funktion zur Widerherstellung der Leerzeichen
function make_spaces($val) {
    
$val "\"".str_replace("%"" "$val)."\"";
    return 
$val;
}
?>
Hat super geklappt.

Danke für den schnellen Support.

Frank
Reguläre Ausdrücke sind zu aufwendig.
Laut PHP-Manual kann str_replace() auch mehr als nur einzelne Zeichen ersetzen:
http://de.php.net/manual/de/function.str-replace.php



MfG, bmaker
Das würde nicht funktionieren, da ja hier noch unterschieden werden muss, ob die Begriffe zwischen Leerzeichen stehen oder nicht.
Meine Antwort bezog sich darauf:
frankrieger schrieb:Wenn ich des richtig weiß kann ich damit nur bestimmte Zeichen durch andere ersetzen. Ich muss aber je nachdem ob das Leerzeichen zwischen "" steht oder nicht anders ersetzen.

Damit meinte er sicher die Funktion strtr(), welche tatsächlich nur einzelne Zeichen ersetzt:
http://de3.php.net/manual/de/function.strtr.php


MfG, bmaker