2017-10-11 7 views
0

In meinem preg_replace RegEx hierersetzen Leerzeichen und Zeilenumbrüche mit Komma

$string = preg_replace('~[^[:alnum:],]*,[^[:alnum:]]*~', ',', $string); 

ich versucht habe Worte voneinander mit Komma zu trennen, und es hat funktioniert, aber dann habe ich versucht, eine Zeichenfolge wie

x 
y 
z 

und

x y z 

die Leerzeichen und Zeilenumbrüche mit so zu ersetzen i die versucht, mitschriebund [[:blank:]] aber sie sind mehr der Lösung von Leerräumen, aber nicht Zeilenumbrüche,

Wie mit den neuen Zeilen umgehen? Ich habe versucht, meinen alten Ersatz /[\s,]+/ für Zeilenumbrüche und Leerzeichen verwenden, aber noch keine Wirkung, ich weiß, ich zwei Anfragen wie

$string = preg_replace('/[\s,]+/', ',', $string); 
$string = preg_replace('~[^[:alnum:],]*,[^[:alnum:]]*~', ',', $string); 

gehen können, aber ich ziehe sie in eine RegEx für Performance verschmelzen.

+0

posten Sie den '$ string' Inhalt, weil Ihre Regex', 'benötigt. Es gibt kein Komma in Ihrer aktuellen Zeichenfolge 'x y z' – RomanPerekhrest

+0

@ WiktorStribiżew jetzt, dass es gelöst wurde. – AXAI

+0

@ WiktorStribiżew Das Problem, dass ich eigentlich dachte, dass '|' kann nur verwendet werden, um einen von zwei Teilen '(a | b) '. Du erleuchtet wirklich. – AXAI

Antwort

1

Versuchen Sie Folgendes:

preg_replace("'/[^[:alnum:],]*,[^[:alnum:]]*|[\s,]+/'", ",", $string); 

Es werden alle Räume und neue Linien mit einem , Komma ersetzen.

+0

@ WiktorStribiżew Ihr Recht, vergessen, die Substitution hinzuzufügen. OP sollte jedoch alle relevanten Informationen in dieser Frage veröffentlichen. – GrumpyCrouton

+0

@ WiktorStribiżew Überprüfen Sie die aktualisierte Antwort. – mega6382

+0

@ mega6382 OP hat bereits diesen zweiten Code ausprobiert. Es hat nicht für sie funktioniert. Sieh dir ihre Frage an – GrumpyCrouton

Verwandte Themen