编码问题,&使用PHP转换为& for HTML

wwtsj6pe  于 2023-05-16  发布在  PHP
关注(0)|答案(4)|浏览(348)

我有一个HTML的URL:

<a href="index.php?q=event&amp;id=56&amp;date=128">

我需要把它转换成一个字符串,如下所示:

<a href="index.php?q=event&id=56&date=128">

我知道如何用preg_replace等来做这件事,但是php中有没有一个函数可以直接处理编码,我可以用它来处理其他编码问题,比如&nsbp(或者其他什么,等等)?理想情况下,我将字符串发送到函数中,它将输出'&'而不是&amp。是否有一个通用的功能转换&TEXT;成一个实际的字符?
编辑:对不起,在我完成问题之前发布了这个。问题现在已经完成。

ih99xse1

ih99xse11#

使用html_entity_decode()

$newUrl = html_entity_decode('<a href="index.php?q=event&amp;id=56&amp;date=128">');
echo $newUrl; // prints <a href="index.php?q=event&id=56&date=128">
sczxawaw

sczxawaw2#

使用htmlspecialchars_decode。直接来自PHP文档页面的示例:

$str = '<p>this -&gt; &quot;</p>';
echo htmlspecialchars_decode($str); // <p>this -> "</p>
ccgok5k5

ccgok5k53#

PHP中没有内置的函数可以将&amp;这样的实体转换为双&。为了避免混淆,&的html实体实际上是&amp;,而不是amp;,因此在您的示例上运行任何内置解析器都会返回以下内容:

<a href="index.php?q=event&id=56&date=128">

而不是

<a href="index.php?q=event&&id=56&&date=128">

为了得到double &版本,你需要使用正则表达式。
或者,如果您实际上需要单个&版本,则有两种可能性。
1.如果你只是想转换&amp; &quot; &#039; &lt; &gt;,那么你应该使用htmlspecialchars_decode。这对于你所给予的例子来说就足够了。
1.如果你想转换任何格式的字符串&TEXT;,那么你应该使用html_entity_decode
我怀疑htmlspecialchars_decode会比html_entity_decode快,所以如果它覆盖了你想转换的所有实体,你应该使用它。

u91tlkcl

u91tlkcl4#

经过字符串去TinyMCE只有这个代码帮助我

$string = iconv('UTF-8','cp1251',$string);
$string = str_replace(chr(160), chr(32), $string);
$string = iconv('cp1251','UTF-8',$string);

相关问题