2012-09-07 142 views
1

我试图使用ereg_replace()只允许上,下字母和空格,因为我会用逗号分解它。ereg_replace删除空格

我有下面的代码,但它是删除空格,我可以弄清楚如何允许,通过。

$type = ereg_replace("[^A-Za-z\.-:/-]", "", $string); 

另外我知道ereg_replace()已被弃用,但这是关闭我已经得到。

+4

'因为**'preg_replace()'**可以做到这一点? – Florent

+0

“另外我知道ereg_replace()已被弃用,但这是我得到的结束。”上班。 –

+2

所以你使用ereg代替preg的唯一原因是_to work_?对不起,我不明白... – Florent

回答

3

使用以下

$new_string = preg_replace('/[^A-Za-z ,]/', '', $string); 

这将使A-Z,A-Z,逗号和空格,并删除一切。

注意:其他的一切包括重音符号等

+0

其实,我认为这会用'''替换'[A-Za-z]',还是我误会了? –

+0

你是绝对正确的,我会解决这个问题。 – Matthew

+0

你是不是指'[^ A-Za-z]'? :-P –

2

不要使用不推荐的功能,它们因为某种原因而被弃用。如果你希望只允许A-Z,A-Z和空格,请使用:

preg_replace('~[^a-z ]~i', '', $subject); 

编辑:根据您的评论“它仍然是去除逗号和空格”,我想你想的逗号被也允许的。在这种情况下,使用:

preg_replace('~[^a-z, ]~i', '', $subject); 
+0

迄今为止的最佳答案**应该被批准** – Florent

+0

为什么不使用'/'分隔用正则表达式代替'〜'? – Matthew

+0

味道真的很重要,我使用正则表达式来匹配URL之类的东西,而我发现使用'〜'的时候,你的转义就少了很多:) –

3

只是逃避逗号和空格

$type = ereg_replace("[^A-Za-z\.-:/-\,\ ]", "", $string); 

结果相同的转换可以了,为什么你使用`ereg_replace()函数预浸

$type = preg_replace("/[^A-Za-z\.-:\/\,\ ]+/", "", $string); 
+0

谢谢你帮助我!同时也感谢你提供替代品,除了争吵之外它已被废弃,正如我向其他人指出的那样。 –

+0

请注意,您仍然需要做一些调整,因为我只复制了现有的正则表达式,并添加了空格和逗号......请查看其他贡献者,以了解如何调整表达式,如果您需要对其进行优化进一步。 – Dave