1

我的句子包括ASCII字符代码,例如

"#$%

如何删除所有 ASCII 码?

我尝试了strip_tags()html_entity_decode()htmlspecialchars(),但它们不起作用。

4

4 回答 4

2

如果您不想要返回值,您可以运行它:

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

但请注意。这基本上是一个 nuker 并且 HTML 实体的工作方式我相信这会干扰你的字符串的其他部分。我建议将它们留在个人中并将它们编码为@hakra 显示。

于 2012-08-24T14:13:46.200 回答
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);

如果这不是你想要的,你需要澄清这个问题。

于 2012-08-24T14:34:57.023 回答
1

如果您手头有多字节字符串扩展名,则可以使用:

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

这确实给出了:

"#$%

松散相关的是:


使用 DOM 扩展,您可以加载它并将其转换为字符串,这可能有助于更好地处理 HTML 元素等:

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

哪个输出:

"#$%

如果它包含 HTML,您可能需要导出该元素的内部 html,这在其他答案中进行了解释:

于 2012-08-24T14:07:04.407 回答
-1

要从字符串中删除日文字符,您可以使用以下代码:

// 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 字符属性
Unicode 脚本

有些语言由多个脚本组成。没有日语 Unicode 脚本。相反,Unicode 提供平假名、片假名、韩文和拉丁文脚本,这些脚本通常由日本文档组成。

试试这里的代码

于 2012-08-24T18:01:08.840 回答