Maison > Questions et réponses > le corps du texte
Comment puis-je remplacer tous les symboles ou espaces d'une chaîne de mots par "-"
Y compris ? @% ! $&*(peu importe)
習慣沉默2017-05-16 13:18:12
$result = preg_replace('/[^w]|[_]/', '『-』', $str);
Faire correspondre et remplacer les caractères non alphanumériques. w
inclut _
Si vous souhaitez tout remplacer, ajoutez |[_]
. $result = preg_replace('/[^w]|[_]/', '「-」', $str);
匹配替换非字母数字并替换。w
包括_
,如果想一并替换掉,再添加上 |[_]
。
回评论:
如果想替换除中英文外的其他字符的话,pattern改为下列形式:/[^bA-Za-zx{4e00}-x{9fa5}]/u
b 表示空格;u4e00-u9fa5
是unicode里中文的表示法,但preg_replace不支持u
的写法,可以使用 x{XXXX}
来替代;
最后使用u
/[^bA-Za-zx{4e00}-x{9fa5} ]/u
u4e00-u9fa5
est la représentation du chinois en unicode, mais preg_replace ne prend pas en charge la méthode d'écriture de u<. /code>, vous pouvez utiliser < code>x{XXXX}
;u
pour indiquer que le jeu de caractères utf-8 est utilisé. 🎜迷茫2017-05-16 13:18:12
preg_replace est une méthode, ici je propose une autre méthode, voir le code ci-dessous
$str = 'hello %abc?11';
$patten = array(
'【',
'】',
'「',
'?',
'%',
'&'
);
$rs = str_replace(' ','',str_replace($patten,'「-」',$str));
echo $rs;