web后端 - 关于php中嵌入html代码时结束符“?>”位置为什么这样放置?
伊谢尔伦
伊谢尔伦 2017-04-10 16:08:06
[PHP讨论组]

大家好,本人初学php,关于html和php代码嵌入有点不明白,

举个例子:


There were some problems with the form you submitted. Please complete the fields highlighted below and click Send Details to resend the form.

Thanks for choosing to join The Widget Club. To register, please fill in your details below and click Send Details. Fields marked with an asterisk(*) are required.

为什么这里遇到“}”就把它单独放置在中。为什么不能写成这样?

There were some problems with the form you submitted.
Please complete the fields highlighted below and click Send Details to resend the form.

} else {

Thanks for choosing to join The Widget Club. To register, please fill in your details below and click Send Details. Fields marked with an asterisk(*) are required.

}

非常感谢,解疑答惑!

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(8)
PHP中文网

因为

标签属于html而不是php语言,所以不能加到php起止符号内

PHP中文网

<?php 这里面的内容表示为php ?>
表示他为php的 代码块结束符号“}”

天蓬老师

因为

<p class=”error”>There were some problems with the form you submitted.
Please complete the fields highlighted below and click Send Details to resend the form.</p>

不是合法的PHP代码.

PHP中文网
  1. 在<?php ?>中的是php代码,第二种写法,很明显标签<p>中的内容不是php代码。

  2. 如果想要用第二种写法,可以这样写:

<?php if ( $missingFields ) { 
echo '<p> ... </p>';
 } else { 
echo '<p> ... </p>';
 } 
?>
高洛峰

所有的非html代码都要嵌入在<?php ?>内,而所有在<?php ?>里面的都会被解析为php代码,按照你的想法,那一对<p>标签里的内容不属于php代码,所以应该是这样分段嵌入的:

<?php if ( $missingFields ) { ?>
xxx
<?php } else { ?>
xxx
<?php } ?>
大家讲道理

7048
其实应该这样理解
在php里, ?> 表示开始输出html,<?php 则是结束符,把它当成一个多行的echo就好理解了,这也是为什么现在推荐不写最后一个?>

天蓬老师

可以这样:

<?php if ( $missingFields ): ?>
    <p class="error">There were some problems with the ....</p>
<?php else: ?>
    <p>Thanks for choosing to join The Widget Club....</p>
<?php endif; ?>
PHP中文网

语言PHP的语法起始标签就是 <?php ?> PHP的语言决定必须这么写!!!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号