MyBB.de Forum
Zeichen in String ersetzen - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Sonstiges (https://www.mybb.de/forum/forum-1.html)
+--- Forum: Programmierung (https://www.mybb.de/forum/forum-32.html)
+--- Thema: Zeichen in String ersetzen (/thread-2469.html)



Zeichen in String ersetzen - frankrieger - 28.06.2006

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


RE: Zeichen in String ersetzen - StefanT - 28.06.2006

Wie wäre es mit str_replace oder mit preg_replace?


RE: Zeichen in String ersetzen - frankrieger - 28.06.2006

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...


RE: Zeichen in String ersetzen - Michael - 28.06.2006

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.


RE: Zeichen in String ersetzen - frankrieger - 28.06.2006

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?


RE: Zeichen in String ersetzen - Michael - 28.06.2006

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;
}
?>



RE: Zeichen in String ersetzen - frankrieger - 28.06.2006

Hat super geklappt.

Danke für den schnellen Support.

Frank


RE: Zeichen in String ersetzen - bmaker - 26.08.2006

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


RE: Zeichen in String ersetzen - Michael - 26.08.2006

Das würde nicht funktionieren, da ja hier noch unterschieden werden muss, ob die Begriffe zwischen Leerzeichen stehen oder nicht.


RE: Zeichen in String ersetzen - bmaker - 26.08.2006

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