无法从网址获取HTML特殊字符

时间:2017-02-01 10:46:48

标签: php

我是php的新手,无法找到我的问题的答案。

我尝试从网址回显一个带有特殊字符的字符串(即àé)。

网址字符串: preview.php?content=<p>bl&agrave; &eacute; bla</p>

预期的回音结果:blà é bla

所以我这样做:

$cont = $_GET['content'];
echo $cont;

结果:     bl

所以,即使我的网页有<meta charset="UTF-8">,我也试过了:

$cont = $_GET['content'];
$cont = html_entity_decode($cont, ENT_COMPAT, 'UTF-8');
echo $cont;

相同的结果:     bl

我尝试在页面顶部使用标题(header('Content-Type: text/html; charset=UTF-8');),结果相同。

奇怪的是,我试着这样做:

echo html_entity_decode("<p>bl&agrave; &eacute; bla</p>");

甚至是这样:

echo "<p>bl&agrave; &eacute; bla</p>";

我得到了预期的结果:     blà é bla

所以,我不认为这是一个字符集问题,但不能理解为什么它与文字字符串一起使用而不是get变量,有人可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

使用以下网址对您的网址进行编码:urlencodehtmlentities

$url = 'content=' . urlencode('content=<p>bl&agrave; &eacute; bla</p>');
echo '<a href="preview.php?' . htmlentities($url) . '">';

答案 1 :(得分:1)

@JustOnUnderMillions,是正确的。

例如:

如果您尝试访问来自网址的数据,例如

var AWS = require("aws-sdk");
var docClient = new AWS.DynamoDB.DocumentClient();
console.time("user get");
var params = {
      TableName : 'User',
      Key: {
        "id": "2f34rf23-4523452-345234"
      }
    };

    docClient.get(params, function(err, data) {
        if (err) {
            callback(err);
        }
        else {              
            console.timeEnd("user get");
        }
    });

但是当您通过编码

等数据传递数据时
http://localhost/index.php?content=%3Cp%3Ebl&agrave;%20&eacute;%20bla%3C/p%3E

echo $_GET['content'];

OUTPUT: bl

最好在URL中使用urlecode函数来编码数据。

答案 2 :(得分:0)

谢谢大家。

这完美无缺!

Actualy,因为我的网址是使用javascript生成的,所以我在链接的href变量上做了encodeURIComponent,它也可以。

答案 3 :(得分:0)

如果要传递带有参数的URL作为URL中的值并通过javascript函数传递,例如。

将URL值通过PHP urlencode()函数传递两次,如此

<?php

   $url = "index.php?id=4&pg=2";
   $url = urlencode(urlencode($url));
   echo "<a href=\"javascript:openWin('page.php?url=$url');\">";
?>

在由javascript函数(page.php)打开的页面上,您只需要urldecode()一次,因为当javascript&#39;触及&#39;通过它的URL,它自己解码URL。因此,只需在PHP脚本中再次对其进行解码即可完全撤消双重编码。

<?php
   $url = urldecode($_GET['url']);
?>

如果您不这样做,您会发现目标脚本中的结果网址值缺少?问号后面的所有var =值。

index.php?id=4

请检查此在线工具:URL EncodeURL Decode