为什么用echo输出html时这些值会跳出标签??

2012-08-12 07:50:25 +08:00
 RiseAgainst
比如:
function test(){
echo "SUCK";
}

echo'<a href="#">'.test().'</a>';
我期望的结果是一个在a标签里的SUCK。
可是浏览器一看
结果是:suck<a href="#"></a>
为什么会这样呢?
4836 次点击
所在节点    PHP
9 条回复
bufannao
2012-08-12 08:23:13 +08:00
return 'SUCK';
lcxz
2012-08-12 09:19:43 +08:00
support up,
haiyang416
2012-08-12 09:33:59 +08:00
在执行的时候会优先运行test()函数,但是你函数是直接打印‘suck’,等打印完之后才有echo..所以....
应该改成return
justfly
2012-08-12 11:20:06 +08:00
当然是return啦
liyandong
2012-08-12 12:00:57 +08:00
return
Rabbit52
2012-08-12 12:51:39 +08:00
return是没错,我觉得原理应该是在输出缓冲之前php先要执行里面的方法,而这个方法是输出字符串,所以这个字符串就在最后的那串字符串之前了
RiseAgainst
2012-08-14 01:24:01 +08:00
@Rabbit52
@haiyang416

感谢。那么如果一个程序自定函数本身就是ECHO。又没有参数能够RETURN,又需要它ECHO的值。这种情况改怎么做呢?
并且我也是在写一个新函数 如果是直接HTML里就没问题。
ljbha007
2012-08-14 01:53:38 +08:00
@RiseAgainst

echo '<a href="#">;
test();
echo '</a>';
evlos
2012-08-14 02:24:08 +08:00
楼上的方法有一定的局限性,如果没办法有正确的运行顺序就不能用了。

ob_start();
echo 'xxx';
$result = ob_get_clean();
//这里就不会直接输出,而是存到 $result 里面
//要输出的时候再 echo $result;

@RiseAgainst

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/44932

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX