【问题标题】:Echo empty space as html char将空白空间回显为 html char
【发布时间】:2017-12-26 08:50:30
【问题描述】:

我有一个字符串90001 90002。我需要查看空白处表示的是哪个 html 特殊字符。 (它可能是一个空白空间 -   或者它可能是一个文本换行符,伪装成 HTML see here 中的一个空间。也许还有其他我不知道的可能性......)

我想回显一个字符串并将空格显示为 html 字符(例如$result = "90001 90002")。

我尝试过使用html_entities,但这不包括空格。 htmlspecialchars 也没有。 我该怎么做呢?
如果可能的话,我想要一个纯粹的 PHP & html 解决方案。如有必要 - CSS。如果不可能的话,javascript将不得不这样做..

【问题讨论】:

  • 你能用 JavaScript 做这个吗?
  • @PraveenKumar 感谢您的回答...抱歉,我没有具体说明我想要什么。我已经更新了问题..
  • 这是我能做的最好的了... :) 如果可能的话,会尝试为您寻找其他解决方案。
  • 如果你有html标签你可以直接使用它,或者你可以使用$result=
    90001 90002
    。它应该工作
  • @Ben 还有另一种方法...嘿,您可以使用这种格式。获取div的html并把它作为文本?

标签: php html


【解决方案1】:

只是一个开箱即用的想法。我遇到了同样的问题,但研究了使用 JavaScript 的 encodeURIComponent() 函数:

$(function () {
  $("div").html(function () {
    return encodeURIComponent($(this).html());
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>90001 90002</div>

因为我有点懒,所以使用了 jQuery。你可以用这种方式在 JavaScript 中做同样的事情:

<div>90001 90002</div>
<script>
  var div = document.querySelector("div");
  div.innerHTML = encodeURIComponent(div.innerHTML);
</script>

只是让您知道这在客户端比在服务器端处理更好。


更新 2: 获取 HTML 内容并更新 HTML 的文本:

$(function () {
  $("div").text(function () {
    return $(this).html().replace(/[\u00A0-\u9999<>\&]/gim, function(i) {
      return '&#'+i.charCodeAt(0)+';';
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>90001—90002</div>

这样的……

【讨论】:

  • 你看输出了吗?你真的要显示%20吗?
  • @Barmar 我不确定,这就是问题所在。我很惊讶错误的答案被投了赞成票,但我在一定程度上解决它的尝试却被否决了。不确定投反对票的人是否误解了问题和答案,或者……您认为答案应该是什么?
  • 将空格作为 HTML 字符回显 - 我的解决方案回答,但赞成的回答无济于事!
  • 问题询问如何将其显示为 HTML 实体 &amp;nbsp;,而不是 URL 编码的 %20
  • @Barmar 我明白了...更新了我的答案。看看对不对?
【解决方案2】:
<?php

$mystring = "90001 90002";

$mystring = str_replace(" ","&nbsp;",$mystring);

echo $mystring;

?>

希望对你有帮助

【讨论】:

  • 谢谢!但我认为你误解了这个问题。我不确定字符串会是什么。我收到它是一个空白空间,我需要打印它以显示那里有什么。 (您的解决方案只是将空字符串替换为一个字符,然后打印该选择的字符..)
  • @Ben 只有 java 脚本可以帮到你
【解决方案3】:
function removeWhiteSpace($text)
{
  $text = preg_replace('/[\t\n\r\0\x0B]/', '', $text);
  $text = preg_replace('/([\s])\1+/', ' ', $text);
  $text = trim($text);
  return $text;
}

【讨论】:

  • 虽然此代码 sn-p 可能是解决方案,但 including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
【解决方案4】:

编辑答案:

如果你需要使用 PHP 来做,请使用 urlencode 函数,它会帮助解决它

<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>

但是他们有挫折,这在文档的注释部分中提到。 http://php.net/manual/en/function.urlencode.php

你也可以在php中使用htmlentities,rawurlencode等函数。

如果你想在 javascript 中使用它,你可以使用转义函数。 https://www.w3schools.com/jsref/jsref_escape.asp

【讨论】:

  • 好吧,您正在替换内容,而它应该将输出显示为 HTML 字符。
  • 不,我刚刚给出了 sn-ps 以确定空格和空字符,此外,一般用法在这里表示为 sn-ps,而不是确切的解决方案 sn-p。
  • 这与问题的需要无关。他们想将ab cd 转换为ab&amp;nbsp;cd...你明白了吗?
  • 如果没有相关性,您如何确定 ab 和 cd 之间有空格,这就是我的解决方案它可以使用正则表达式,当您使用正则表达式解析字符串时,您将获得组你可以用你需要的任何字符替换它
  • 我想回显一个字符串并将空格显示为 html 字符(例如 $result = "90001 90002")。 -你读过这个问题吗?我不再争论了。享受假期。
猜你喜欢
  • 2015-12-14
  • 2012-09-17
  • 2015-04-14
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多