• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] String-Teile von einem Text ersetzen/entfernen

Sebi94

Mitglied
Hallo liebe Community!

Ich habe ein multidimensionales Array und möchte aus einem Array bestimmte Text-Stellen "rauslöschen".

Beispiel:
PHP:
echo $serverinfo[$i]['data']['virtualserver_welcomemessage'];
HTML:
Willkommen auf dem TeamSpeak 3 Server vom [URL=http://fascinatinggaming.no-ip.info/][b][color=#000000]Fascinating[/color][color=#EEAA22]Gaming[/color][/b]™ Clan[/URL]! Besucht auch unsere Webseite: Klicke auf den Banner!\nBitte alle mal hier anmelden :) [URL]http://fascinatinggaming.no-ip.info/[/URL]

Ich habe es versucht wie folgt zu lösen, jedoch funktioniert das irgendwie nicht, da ich immer den selben String wie vorher rauskriege... :(
PHP:
$string_to_replace = "/\[[^\]]+\]/i";
$welcome_message = $serverinfo[$i]['data']['virtualserver_welcomemessage'];
$welcome_message = str_replace($string_to_replace, "", $welcome_message);
$welcome_message = str_replace("/\\n/", " ", $welcome_message);
echo $welcome_message;
HTML:
Willkommen auf dem TeamSpeak 3 Server vom [URL=http://fascinatinggaming.no-ip.info/][b][color=#000000]Fascinating[/color][color=#EEAA22]Gaming[/color][/b]™ Clan[/URL]! Besucht auch unsere Webseite: Klicke auf den Banner!\nBitte alle mal hier anmelden :) [URL]http://fascinatinggaming.no-ip.info/[/URL]

Das Endergebnis sollte wie folgt aussehen:
HTML:
Willkommen auf dem TeamSpeak 3 Server vom FascinatingGaming™ Clan! Besucht auch unsere Webseite: Klicke auf den Banner!
Bitte alle mal hier anmelden :) http://fascinatinggaming.no-ip.info/

Ich hoffe, mir kann jemand helfen. Vielen Dank! :)
 
Hallo!
hast du den code oben selber gebastelt?
Ja, habe ich. Wieso? Ist der schlecht?

Das einzigste was ich daran nicht gebaut habe, ist das Array $serverinfo[ZAHL]['data']['welcome_message']. Das wird von dem TeamSpeak Server so zurück gegeben. :)

PHP:
preg_replace('/\[[^\]]+\]/i', '', $serverinfo[$i]['data']['virtualserver_welcomemessage']);
Vielen Dank! Jetzt hab ich jedoch das nächste Problem, wo ich nicht weiter komme. Ich krieg diese "\r" und "\n" für die Linux und Windows-Zeilenumbrüche nicht ersetzt... Da hätte ich gerne einen richtigen Umbruch für HTML drin. Also "<br>":
PHP:
$welcome_message = preg_replace('/\[[^\]]+\]/i', '', $serverinfo[$i]['data']['virtualserver_welcomemessage']);
$serverinfo[$i]['data']['virtualserver_welcomemessage'] = preg_replace('/(\\n\\r|\\n|\\r)/', '<br>', $welcome_message);


TIPP: hier ist ein super online tool zum selber schnell testen: Regular expression tool - regex.larsolavtorvik.com
Ah, cool. Danke schön. Ich kannte bisher nur das hier: Rubular: a Ruby regular expression editor and tester

Laut beiden Regex-Seiten matcht meine Expression...
 
Hallo,

das selber gemacht hast ist schon schick halt das str_replace() war kommplet falsch da ja REGEX gebaut hasr als filter.

Das mit dem umbruch hast mal damit versucht, da dies ja extra für so was gibt

$welcome_message = nl2br($welcome_message);
Cheffchen
 
Hallo,

ja nl2br() kann nicht funktionieren.
aber das was du gemacht hast müsste eigentlich funktionieren mit dein preg_replace funktion.
sicher das dies nicht funktioniert oder wird die variable bloss wieder falsch überschrieben.

Cheffchen
 
Ja, müsste... Tut es aber nicht.^^

Siehst du vielleicht einen Fehler?

PHP:
$welcome_message = preg_replace('/\[[^\]]+\]/i', '', $serverinfo[$i]['data']['virtualserver_welcomemessage']);
echo preg_replace('/(\\n\\r|\\n|\\r)/', '<br>', $welcome_message);
Willkommen auf dem TeamSpeak 3 Server vom FascinatingGaming™ Clan! Besucht auch unsere Webseite: Klicke auf den Banner!\nBitte alle mal hier anmelden :) http://fascinatinggaming.no-ip.info/
 
mach mal aus allen \\ das \\\
LoL. Funktioniert halt echt. *eek* *confused* :D

Vielen Dank! :)

frag mich aber nicht wie so.
Wieso? ;D

Ich glaub ich weis warum: Ein Backslash escapet den eigentlichen Backslash und somit steht ein Backslash da... Der wird von PHP wieder als "Escape"-Backslash angesehen... Um den als wirklichen Backslash an zu sehen, muss man diesen nochmal escapen. :)

Für Leser: Das Ergebnis für alles lautet wie folgt:
PHP:
$welcome_message = preg_replace('/\[[^\]]+\]/i', '', $serverinfo[$i]['data']['virtualserver_welcomemessage']);
$serverinfo[$i]['data']['virtualserver_welcomemessage'] = preg_replace('/(\\\n\\\r|\\\n|\\\r)/', '<br>', $welcome_message);

Zur Erklärung:
Das erste "preg_replace()" entfernt alle BBCodes. Also die nachfolgenden zum Beispiel:
[ COLOR=#ffffff][/COLOR]
[ B][/B]
[ ULR=http://example.com/][/URL]

Das zweite "preg_replace()" entfernt dann noch alle Linux/Windows-Zeilenumbrüche und wandelt diese in HTML-Zeilenumbrüche um. :)
 
Zurück
Oben