将 ' 转换为 PHP 中的撇号

Posted

技术标签:

【中文标题】将 \' 转换为 PHP 中的撇号【英文标题】:Convert ' to an apostrophe in PHP将 ' 转换为 PHP 中的撇号 【发布时间】:2011-10-11 02:27:08 【问题描述】:

我的数据中有许多 html 实体 (• ...etc),包括 '。我只是想把它转换成它的等效字符。

我认为 htmlspecialchars_decode() 会起作用,但是 - 没有运气。想法?

我试过这个:

echo htmlspecialchars_decode('They're here.');

但它返回:They're here.

编辑:

我也尝试过 html_entity_decode(),但它似乎不起作用:

echo html_entity_decode('They're here.')

也返回:They're here.

【问题讨论】:

【参考方案1】:

由于' 不是HTML 4.01 的一部分,默认情况下它不会转换为'

php 5.4.0 中,extra flags were introduced 处理不同的语言,每种语言都包含' 作为一个实体。

这意味着你可以这样做:

echo html_entity_decode('They're here.', ENT_QUOTES | ENT_HTML5);

您将需要ENT_QUOTES(转换单引号和双引号)和ENT_HTML5(或除ENT_HTML401 之外的任何语言标志,因此请选择最适合您的情况的标志)。

在 PHP 5.4.0 之前,您需要使用 str_replace:

echo str_replace(''', "'", 'They're here.');

【讨论】:

我已经更新了 PHP 5.4.0 的答案(支持 eric.itzhak 进行更新)。【参考方案2】:

有一种“正确”的方式,不使用 str_replace ,@cbuckley 是正确的,因为 html_entity_decode 的默认值是 HTML 4.01,但您可以设置一个 HTML 5 参数来对其进行解码。

像这样使用它:

html_entity_decode($str,ENT_QUOTES | ENT_HTML5)

【讨论】:

【参考方案3】:

很遗憾,'html_entity_decodehtmlspecialchars_decode 函数使用的 PHP 转换表中没有 ' 实体和许多其他实体。

检查 PHP 手册中的此评论: http://php.net/manual/en/function.get-html-translation-table.php#73410

【讨论】:

【参考方案4】:

这应该可行:

$value = "They're here.";
html_entity_decode(str_replace("'","'",$value));

【讨论】:

感谢您的宝贵时间,但这与已经批准的答案相同。【参考方案5】:

你真正要找的是html_entity_decode()

html_entity_decode() 将所有实体转换为字符,而 htmlspecialchars_decode() 仅反转 htmlspecialchars() 将编码的内容。

编辑:查看我链接到的页面上的示例,我做了更多调查,以下似乎不起作用:

[matt@scharley ~]$ php
<?php
$tmp = array_flip(get_html_translation_table(HTML_ENTITIES));
var_dump($tmp['&apos;']);
PHP Notice:  Undefined index: &apos; in - on line 3
NULL

这就是它不起作用的原因。为什么它不在查找表中完全是另一个问题,很遗憾我无法回答。

【讨论】:

@Dave:不幸的是,您可能需要自己动手......似乎 PHP 不支持反转 &amp;apos; 出于某种原因。有关更多信息,请参阅我的编辑。 这似乎是因为&amp;apos; 不是 HTML 4.01 的一部分。 @cbuckley 听起来像是一个可能的原因。 &amp;apos; 被拉入 XHTML 以与 XML 兼容。【参考方案6】:

您是否尝试过使用echo htmlspecialchars('They&amp;apos;re here.')

我想这就是你要找的。​​p>

【讨论】:

我认为这与我想要的相反。

以上是关于将 ' 转换为 PHP 中的撇号的主要内容,如果未能解决你的问题,请参考以下文章

忽略正则表达式中的撇号[重复]

XPath 查询中的撇号 (')

Selenium IDE - 由于字符串中的撇号,“执行脚本”中的变量无法使用

忽略包含中的撇号

XML 字符串文件中的撇号

任何允许 Pivot 中的撇号 SQL 列别名的安全问题?