2016-11-24 2 views
-1

Ich versuche, einige akzentuierte Zeichen in PHP zu ersetzen. Zuerst benutze ich preg_match, um diese Art (und es funktioniert) von Zeichen dann preg_replace zu entdecken, um sie durch ein anderes zu ersetzen. In meinem Fall versuche ich /[é]|[è]/ durch 'e' zu ersetzen.Wie preg_replace für akzentuierte Zeichen zu machen

if(preg_match('/[é]|[è]/',$adress)){ 
     preg_replace('/[é]|[è]/','e',$adress); 
} 

Also keine Alternativen oder andere Lösungen.

+1

Sie vergessen den Modifikator '/ u'. Verwenden Sie einfach $ address = preg_replace ('/ [èè]/u', 'e', ​​$ address); ' –

+0

es funktioniert nicht. Das Beispiel: https://3v4l.org/8FshJ – KubiRoazhon

+0

Es funktioniert https://3v4l.org/0rMU4 –

Antwort

0

In Ihrem Code wird die Variable $adress an preg_replacenach Wert übergeben. Die Linie

preg_replace('/[é]|[è]/','e',$adress); 

ersetzt tatsächlich die Zeichen in eine temporäre Kopie von$adress variabel. Aber das Ergebnis ist ungenutzt.

Wenn Sie es ändern möchten, sollten Sie das Ergebnis der preg_replace zuweisen:

$adress = preg_replace('/[éè]/u', 'e', $adress); 

Beachten Sie die Verwendung von u Flagge. Außerdem habe ich den ursprünglichen regulären Ausdruck etwas optimiert.

Alternativ str_replace verwenden. Es ist nicht „multibyte“ betrachtet, aber es kann tatsächlich für solche Ersetzungen verwendet werden:

$adress = str_replace(['é', 'è'], 'e', $adress); 

P. S .: betrachten $adress zu $address umbenennen.

Verwandte Themen