2010-09-06 74 views
20

我如何解析字符串,除去在PHP中所有非英文字符删除非英语字符PHP

现在我想删除之类的东西

სოფონი

谢谢:)

+0

我假定你的意思非拉丁/罗马字母。 – 2010-09-06 23:44:20

+0

是啊对不起,这就是我的意思 – 2010-09-06 23:45:11

回答

45
$str = preg_replace('/[^\00-\255]+/u', '', $str); 
+1

非常好地完成。学到了新东西! – 2010-09-06 23:57:59

+1

我很高兴能够帮助和分享知识:) – aularon 2010-09-07 00:12:25

+0

八进制0到255,所以十进制0到173? – Gumbo 2013-12-18 12:40:46

5

通过使用preg_replace()

$string = "some სოფო text"; 
$string = preg_replace('/[^a-z0-9_ ]/i', '', $string); 

echo $string; 

当然,您需要扩展preg_replace模式,但这是实现它的一种方法。可能有更好的办法,我只是不知道。

-1

使用此代码:

$illegalChars = array("",); 
$string = str_replace($illegalChars,"",$string); 
echo $string; 
+0

您需要与每个非英文字符比较 – 2014-07-31 20:26:43

+0

我倾向于使用“白名单”方法而不是“黑名单”方法。也就是说,我会让例程标识应该保留的字符,那些字符是_ARE_“英文字符”并消除其余字符,而不是试图识别应该删除的字符。 – spencer7593 2014-07-31 21:45:13

6

你最好的办法是使用iconv,这将字符串转换为所需的字符编码。

iconv('UTF-8', 'ASCII//TRANSLIT', $yourtext); 

//translit你得到一个有意义的转换成ASCII码(例如SS - > SS)。使用// IGNORE将完全去除非ASCII字符。

iconv('UTF-8', 'ASCII//IGNORE', $yourtext); 

http://php.net/manual/en/function.iconv.php