2009-07-25 63 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