2012-08-24 182 views
1

我的句子包括像如何從一個字符串中刪除所有的ASCII碼

"#$% 

如何刪除所有ASCII碼ASCII字符代碼?

我試過strip_tags(),html_entity_decode()htmlspecialchars(),他們沒有工作。

+1

如果刪除這些字符,你不打算失去你的句子的意思? – Jocelyn

+0

不,我的句子包括日本字符和正常的字符。我需要刪除日文字符。 – user198989

+1

但這些都不是日語字符,它們是'「#$%' –

回答

1

如果你手頭多字節字符串的擴展,這個工程:

$string = '"#$%'; 
mb_convert_encoding($string, 'UTF-8', 'HTML-ENTITIES'); 

這確實給:

"#$% 

鬆散的聯繫是:


通過DOM擴展,你可以加載它,並把它轉換到這可能有利於更好地處理HTML元素和一個字符串,例如:

echo simplexml_import_dom(@DomDocument::loadHTML('"#$%'))->xpath('//body/p')[0]; 

這確實輸出:

"#$% 

如果它包含HTML,則可能需要導出該元素的內部html,這在一些其他答案中有所解釋:

2

你可以運行這個,如果你不希望返回值:

preg_replace('/(&#x[0-9]{4};)/', '', $text); 

但要注意。這基本上是一個nuker和HTML實體的工作方式,我相信這會干擾你的字符串的其他部分。我建議將它們放在個人身份中,並將它們編碼爲@hakra節目。

+0

警告:preg_replace函數了錯誤的參數計數() – user198989

+1

@ user198989笑感謝頭:P編輯 – Sammaye

2

您是否嘗試刪除解析爲非ascii字符的實體?如果這是你想要的,你可以使用此代碼是什麼:如果這不是你想要的,你需要澄清的問題

$str = '" # $ % 琔'; // " # $ % 琔 
// decode entities 
$str = html_entity_decode($str, ENT_QUOTES, 'UTF-8'); 
// remove non-ascii characters 
$str = preg_replace('/[^\x{0000}-\x{007F}]/u', '', $str); 

或者

// decode only iso-8859-1 entities 
$str = html_entity_decode($str, ENT_QUOTES, 'iso-8859-1'); 
// remove any entities that remain 
$str = preg_replace('/&#(x[0-9]{4}|\d+);/', '', $str); 

0

從字符串中刪除日文字符,你可以使用下面的代碼:

// Decode the text to get correct UTF-8 text: 
$text = html_entity_decode($text, ENT_QUOTES, 'UTF-8'); 

// Use the UTF-8 properties with `preg_replace` to remove all Japanese characters 
$text = preg_replace('/\p{Katakana}|\p{Hiragana}|\p{Han}/u', '', $text); 

文檔

Unicode character properties
Unicode scripts

一些語言是由多個的腳本。沒有日文的Unicode腳本。取而代之的是,統一提供,日本文檔通常由平假名,片假名,韓和拉丁文字。

Try the code here

相關問題