Beiträge: 762
Themen: 23
Registriert seit: 18.03.2006
MyBB-Version: 1.2.2
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
Eine Homepage ist nie fertig, man hört nur auf an ihr zu arbeiten - Unbekannter Verfasser
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
Wie wäre es mit str_replace oder mit preg_replace?
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 762
Themen: 23
Registriert seit: 18.03.2006
MyBB-Version: 1.2.2
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...
Eine Homepage ist nie fertig, man hört nur auf an ihr zu arbeiten - Unbekannter Verfasser
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
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.
Gruß,
Michael
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 762
Themen: 23
Registriert seit: 18.03.2006
MyBB-Version: 1.2.2
28.06.2006, 20:28
(Dieser Beitrag wurde zuletzt bearbeitet: 28.06.2006, 20:36 von frankrieger.)
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?
Eine Homepage ist nie fertig, man hört nur auf an ihr zu arbeiten - Unbekannter Verfasser
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
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;
}
?>
Gruß,
Michael
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 762
Themen: 23
Registriert seit: 18.03.2006
MyBB-Version: 1.2.2
Hat super geklappt.
Danke für den schnellen Support.
Frank
Eine Homepage ist nie fertig, man hört nur auf an ihr zu arbeiten - Unbekannter Verfasser
Beiträge: 92
Themen: 5
Registriert seit: 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
Beiträge: 18.383
Themen: 257
Registriert seit: 09.02.2005
Das würde nicht funktionieren, da ja hier noch unterschieden werden muss, ob die Begriffe zwischen Leerzeichen stehen oder nicht.
Gruß,
Michael
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Beiträge: 92
Themen: 5
Registriert seit: 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