Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.8 veröffentlicht (17.10.16)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Zeichen in String ersetzen
#1
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
Zitieren
#2
Wie wäre es mit str_replace oder mit preg_replace?
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
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
Zitieren
#4
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
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#5
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
Zitieren
#6
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
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#7
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
Zitieren
#8
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
Dieser Satz kein Verb. Big Grin
Zitieren
#9
Das würde nicht funktionieren, da ja hier noch unterschieden werden muss, ob die Begriffe zwischen Leerzeichen stehen oder nicht.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#10
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
Dieser Satz kein Verb. Big Grin
Zitieren


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  [PHP] String nach dem 2. Punkt löschen Waluigi 2 1.880 19.07.2010, 22:33
Letzter Beitrag: querschlaeger