2014-03-26 43 views
-1

我有几个字符串看起来像这样的:PHP删除所有非字母和数字

Lasklé
琼斯&乔恩

我试图通过四方API给他们进行匹配,但它与这些角色失败。有没有一种方法来净化这些使他们只包含英文字母,即结果将是:

Lasklé
琼斯乔恩

当它出现使用file_get_contents请求都与“A©”和“&”在URL中导致问题。

我检查了请求是如何发送的,并意识到'&'被取消并导致问题,是否可以从名称中删除所有非字母/数字?

+1

你需要'urlencode'他们先 – Diamondo25

+0

'é'应该是UTF8,'&'应该URL编码 – slash197

+0

使用'进行urlencode($ STR)'编码您的网址 – Thanu

回答

0

你可以使用的preg_replace()函数使用替换字符串的一部分正则表达式

只保留你可以使用如下这样做也会删除空间字母(从表达式添加\ s到保持空间)

preg_replace('/[^a-zA-z]/','',$string); 

保持空间的字符串或任何字符,让你可以在[]

preg_replace('/[^a-zA-Z\s]/','',$string); 
1

通过它们之前,字符串是什么样的?如果您的字符串看起来像'Lasklé',那么我认为在读取字符串时使用了错误的字符集,请尝试使用UTF-8。

如果在传递字符串之前该字符串看起来正确,则应首先尝试urlencode字符串。

+0

我使用了'utf8_decode',然后'urlencode'给我: Jones +%26%23038%3B +儿子 然后当我发送匹配请求到foursquare与纬度/经度51.551883,-0.073798我没有得到任何匹配。但是,使用Chrome并以Jones +&+ Sons发送请求确实会创建匹配项。 Chrome发送的内容和PHP发送的内容有什么区别? – user3463248

+0

你在urlencoding有什么是琼斯&儿子,&已经被转换为它的htmlentity形式。你想出来的是琼斯+%26 +儿子。如果在阅读后直接转储它(即在任何操作之前),字符串是什么样的?您可能需要在此处显示您的代码以获得更多帮助。 – nicja

0

使用添加这种逃避(空格和“ - ”)。适合做自定义URL

$string=preg_replace("/[^A-Za-z0-9\s\/\-]/", '', $string); 
相关问题