PHP将任何不是字母或数字的内容更改为“%20”

时间:2014-08-25 20:41:21

标签: php regex

我需要使用PHP将任何不是字母或数字的内容更改为%20

例如:$_POST['name'] = "John_Doe"$_POST['name'] = "John-Doe"将成为John Doe

是否有一些正则表达式可以替代任何非字母或数字的正则表达式?

3 个答案:

答案 0 :(得分:4)

尝试:

preg_replace('/[^A-Za-z0-9]/', '%20', 'Hello World');

你会得到

"Hello%20World"

答案 1 :(得分:1)

有两种方法可以做到这一点。 1)你可以做一个简单的替换。

   preg_replace('/[^a-zA-z0-9]/', '%20', $YourString);
   //Which should replace anything other then a-Z or 0-9 with '%20'

文档为here

或者你可以蛮力。通过遍历字符串并检查每个字符以查看它是字母还是数字并用'%20'替换该字符

第一种方式更简单,但第二种方式是一个很好的练习

答案 2 :(得分:1)

路易斯的答案很好,虽然它可以写得更容易

preg_replace('#\W#', '%20', 'Hello World');

做同样的事情:)并且它更短

\W代表非单词字符