Weder str_replace() noch mb_eregi_replace() funktionieren.

FrazeColder

Lt. Commander
Registriert
Okt. 2013
Beiträge
1.718
Moin zusammen,

ich sitze hier jetzt schon etwas länger dran und komme leider einfach nicht weiter...
Denn ich habe ein Array, welches mehrere Titel beinhaltet. Ich möchte gerne, dass alle Title gelöscht werden, sollten diese mal in einem Namen vorkommen.

Nur verstehe ich nicht, wieso die Wörter nicht einfach gelöscht werden. Denn Sie kommen im Array genau so, wirklich exakt so vor, wie bei der Übergabe an die jeweiligen Methoden...

Allerdings funktioniert das weder mit:
Code:
str_replace($deletewords, '', $string);

Noch mit:
Code:
mb_eregi_replace('\b' . implode('|', $deletewords) . '\b', '', $string);

Aktuell sieht mein Code so aus:
Code:
$deletewords = ["Mitgliedschaft Card (Weltweit)", "(Xbox 360/Xbox One/weltweit)", "Origins", "Guthaben Code - nur DE", "Guthaben Code für EA ORIGIN", "PC - nur DE"];
$myArra = ["Mitgliedschaft Card (Weltweit)", "(Xbox 360/Xbox One/weltweit)", "Origins", "Guthaben Code - nur DE", "Guthaben Code für EA ORIGIN", "PC - nur DE"];

foreach ($myArra as $string){
    $string = mb_eregi_replace('\b' . implode('|', $deletewords) . '\b', '', $string);
    echo $string;
}

Ausgabe am Ende ist vom jetzigen Code ist:
Code:
Mitgliedschaft Card (Weltweit)()

Ich würde natürlich gerne auf Grund von "ignore Case", die mb_eregi_replace() Funktion für meinen späteren Code dann bevorzugen.

Ich hoffe ihr könnt mir helfen...
MfG und Vielen Dank!
 
Ich tippe mal ins Blaue, dass die RegExp-Sonderzeichen wie () und / in $deletewords ein Problem sind.

Hättest übrigens ruhig Deinen "alten" RegExp weiterverwenden können. :-)

Übrigens. Unter https://regex101.com/ funktionierts auch nicht. Nur wenn ich oben besagte "Sonderzeichen escape.

Vielleicht solltest du Dir mal zu Herzen nehmen was man Dir schreibt (mal RegExp durcharbeiten und nicht nur try&Error) und angebotene Hilfstools wie regex101.com nutzen.

Der hat nämlich auch ein Explainer, damit klar wird, was passiert.
 
Zuletzt bearbeitet: (Ergänzung)
PHP:
$string = str_replace($deletewords, '', $string);

funktioniert doch....
Ergänzung ()

PHP:
        $deletewords = ["Mitgliedschaft Card (Weltweit)", "(Xbox 360/Xbox One/weltweit)", "Origins", "Guthaben Code - nur DE", "Guthaben Code für EA ORIGIN", "PC - nur DE"];
$myArra = ["Mitgliedschaft Card (Weltweit)", "(Xbox 360/Xbox One/weltweit)", "Origins", "Guthaben Code - nur DE", "Guthaben Code für EA ORIGIN", "PC - nur DE"];
 $newdw =[];
 
foreach ($deletewords as $string){
    array_push($newdw, preg_quote($string));
}
 
foreach ($myArra as $string){
    $string = mb_eregi_replace( implode('|', $newdw), '', $string);
    echo "info: " . $string . "\r\n";
}

oder halt so
Ergänzung ()

man sind meine php zeiten lange her ;)
 
Zurück
Oben