php 把字串的所有符號或空白換成 「-」

請問如何把一串字的所有符號或空白都替換成 「-」呢
包括,?@%!$&*(什麼的)

阅读 2.8k
3 个回答

preg_replace是一种方法,这里我提供另外一种方法,参看下面代码

    $str = 'hello %abc?11';
    $patten = array(
        '【',
        '】',
        '「',
        '?',
        '%',
        '&'
    );

    $rs = str_replace(' ','',str_replace($patten,'「-」',$str));
    echo $rs;

$result = preg_replace('/[^\w]|[_]/', '「-」', $str);
匹配替换非字母数字并替换。
\w包括_,如果想一并替换掉,再添加上 |[_]


回评论:
如果想替换除中英文外的其他字符的话,pattern改为下列形式:
/[^\bA-Za-z\x{4e00}-\x{9fa5}]/u
b 表示空格;
\u4e00-\u9fa5是unicode里中文的表示法,但preg_replace不支持\u的写法,可以使用 \x{XXXX}来替代;
最后使用u选项来表示用的是utf-8字符集。

调用一下 removeXss()

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题