2009-07-25 64 views
0

我在一个丰富的HTML文本字符串上使用HTML实体,但一些像Â的字符仍然通过...我怎么能强制只有英文,同时仍然保留HTML格式或强制他们到HTML?php:剥离不需要的字符

+0

我认为你更好地处理非英文字符并且不使用实体。 – artificialidiot 2009-07-26 11:10:53

回答

4

我认为从phpbuilder下面的一段代码似乎是合理的。它使用正则表达式检查一些输入($ string)中的无效字符。

if(preg_match("@[^a-zA-Z0-9\~`\!\@#$%\^&\*\(\)_\-\+\=\{\}\[\]\'\"\:\;\?\/\>\<\.\,\|]*@", $string) { 
    // There are non-english characters.... 
} else { 
    // There are no non-english characters 
} 

祝你好运。

0

尝试这样:

$arr_busca = array('á','à','â','ã','ª','Á','À', 
    'Â','Ã', 'é','è','ê','É','È','Ê','í','ì','î','Í', 
    'Ì','Î','ò','ó','ô', 'õ','º','Ó','Ò','Ô','Õ','ú', 
    'ù','û','Ú','Ù','Û','ç','Ç','Ñ','ñ'); 
    $arr_susti = array('a','a','a','a','a','A','A', 
    'A','A','e','e','e','E','E','E','i','i','i','I','I', 
    'I','o','o','o','o','o','O','O','O','O','u','u','u', 
    'U','U','U','c','C','N','n'); 
    $nom_archivo = trim(str_replace($arr_busca, $arr_susti, $nom_archivo)); 
    return $nom_archivo; 

我从php.net str_replace page,这就是为什么变量在西班牙得到它的直接...

正如评论所说,这是一个不完整的字符列表来检查,但这是关于如何检查和替换它们的想法。你可能想要搜索一个库。

+0

该列表非常不完整,我不认为依靠它是安全的。它不包括北欧语言使用的任何字符,如å,ä,ö和ü。 – 2009-07-25 23:30:12