2016-11-24 7 views
-1

phpのアクセント付き文字を置き換えようとしています。まず第一に、私はpreg_matchを使って、この種類の文字を検出してから、その文字をpreg_replaceに置き換えて、他の文字に置き換えます。私の場合、/[é]|[è]/'e'に置き換えようとしています。アクセント付き文字のpreg_replaceの作成方法

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

代替手段またはその他の解決策です。

+1

あなたは '/ u'修飾子を忘れています。 '$ adress = preg_replace( '/ [éè]/u'、 'e'、$ adress); ' –

+0

は機能しません。例:https://3v4l.org/8FshJ – KubiRoazhon

+0

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

答えて

0

コードでは、変数$adresspreg_replaceに値に渡されます。ライン

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

は実際に$adress変数の一時コピー内の文字を置換します。しかし、結果は未使用です。

あなたはそれを変更したい場合は、あなたがそれにpreg_replaceの結果に割り当てる必要があります。

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

uフラグの使用に注意してください。また、私は元の正規表現をわずかに最適化しました。

また、str_replaceを使用してください。これは、「マルチバイト」とみなされていないが、それは実際には、このような交換のために使用することができます。

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

P.S:$address$adressの名前を変更することを検討してください。

関連する問題