如何修复 PHP sprintf 行为?

发布于 2024-11-07 02:08:04 字数 163 浏览 1 评论 0 原文

上下文

  • PHP
  • XAMPP

为什么不打印任何内容?

$a=sprintf('<s');
echo $a;

Context

  • PHP
  • XAMPP

Why does this not print anything?

$a=sprintf('<s');
echo $a;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

始终不够 2024-11-14 02:08:04

你输出到浏览器吗? 可以被解释为标签的开头(恰好是不完整/未闭合的),因此被隐藏。如果是这种情况,请检查页面的来源。调试脚本输出时,永远不要相信主浏览器窗口,因为它会故意向您隐藏一些内容。

Are you outputting into a browser? The <a could be interpreted as the start of a tag (which happens to be incomplete/unclosed) and therefore hidden. If this is the case, check the page's source. Never trust the main browser window when debugging script output, as it'll hide things from you by design.

Smile简单爱 2024-11-14 02:08:04

它在我的 Linux 机器上运行良好。

$ php <<< '<?php $a=sprintf("<s"); echo $a; ?>'
<s

您可能会被缓冲所困扰。尝试在打印输出中添加换行符,或使用 var_dump()

echo "$a\n";
var_dump($a);

It works fine on my Linux machine.

$ php <<< '<?php $a=sprintf("<s"); echo $a; ?>'
<s

You might be getting bitten by buffering. Try adding a newline to your printout, or use var_dump().

echo "$a\n";
var_dump($a);
瘫痪情歌 2024-11-14 02:08:04

它确实打印

<swesley@ubuntu:~$ cat blah.php


<?php
$a=sprintf('<s');
echo $a;
?>



wesley@ubuntu:~$ php blah.php

<s

wesley@ubuntu:~$ 

我的猜测是您在浏览器中运行它并将其解释为 html 标记的开头。

It does print <s

<swesley@ubuntu:~$ cat blah.php


<?php
$a=sprintf('<s');
echo $a;
?>



wesley@ubuntu:~$ php blah.php

<s

wesley@ubuntu:~$ 

My guess is that your running this in a browser and that interprets it as the start of a html tag.

丶视觉 2024-11-14 02:08:04

如果您查看渲染的 html 上的源代码,您会发现它实际上就在那里。
你必须转义 html 字符“<”否则您的浏览器将尝试渲染它。

$a=sprintf('<s');
echo $a;

参考

If you view source on your rendered html you will see that it is in fact there.
you have to escape the html character "<" otherwise your browser will try to render it.

$a=sprintf('<s');
echo $a;

Reference

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文