关于PHP结束标签的使用细节探讨及联想

当PHP解析一个文件时,会寻找开始<?php和结束标记?>,标记告诉PHP开始和停止解释其中的代码。此种方式的解析可以使PHP嵌入到各种不同的文档中,凡是在一对开始和结束标记之外的内容都会被PHP解析器忽略。大多数情况下PHP都是嵌入在HTML文档中的。

单行注释仅仅注释到行末或者当前的 PHP 代码块,视乎哪个首先出现。这意味着在 // ... ?> 或者 # ... ?>之后的 HTML 代码将被显示出来:?> 跳出了 PHP 模式并返回了 HTML 模式,// 或 #并不能影响到这一点。

由以上讨论可可知,即使?>出现在//注释中,PHP解析器也会认为PHP解析结束(当 PHP 碰到结束标记 ?> 时,就简单地将其后的内容原样输出( 除非其后紧接着一个新行,参见指令分隔符)直到碰到下一个开始标记为止)。


代码如下:

<?php
//$a = '<a href="test.html" title="#">test</a><a href="test.html" title="#">test</a>';
//preg_match_all('|<a[^>]+href="([^\"]*)".*?>|', $a, $b);
//print_r($b);

输出为:


代码如下:

:!php preg.php
|', $a, $b);
//print_r($b);

如何修正上述问题呢?或者你使用/* */进行注释,或者将?>用字符串连接符进行连接,如下:


代码如下:

<?php
$a = '<a href="test.html" title="#">test</a><a href="test.html" title="#">test</a>';
preg_match_all('|<a[^>]+href="([^\"]*)".*?'.'>|', $a, $b);
print_r($b);

这一细节同样适用于JS结束标签</script>

(0)

相关推荐

  • php标签云的实现代码

    数据库中,存放文章的表中有"Tag"字段,用来存放标签.标签之间用","分隔.比如"PHP,VB,随笔". 下面的实现代码,将标签从数据库中搜出来,并格式化处理,使其以出现的次数为依据显示出不同大小的文字连接. 其中的细节,不做解释了! 观念陈.方法笨.效率低的标签云的实现代码如下: 复制代码 代码如下: /** * WNiaoBlog Tag Template ShowTag * * @package WNiaoBlog * * @subpac

  • 关于PHP结束标签的使用细节探讨及联想

    当PHP解析一个文件时,会寻找开始<?php和结束标记?>,标记告诉PHP开始和停止解释其中的代码.此种方式的解析可以使PHP嵌入到各种不同的文档中,凡是在一对开始和结束标记之外的内容都会被PHP解析器忽略.大多数情况下PHP都是嵌入在HTML文档中的. 单行注释仅仅注释到行末或者当前的 PHP 代码块,视乎哪个首先出现.这意味着在 // ... ?> 或者 # ... ?>之后的 HTML 代码将被显示出来:?> 跳出了 PHP 模式并返回了 HTML 模式,// 或 #并

  • vue parseHTML函数解析器遇到结束标签

    目录 引言 match函数匹配正则endTag 关键 parseEndTag 函数代码 总结parseEndTag 函数作用 handleStartTag函数后续 最后更新 stack 栈以及 lastTag 引言 承接上篇 parseHTML 函数源码解析拿到返回值后的处理 接下来我们将会讲解当 textEnd === 0 解析器遇到结束标签,parse 结束标签的代码如下: // End tag: var endTagMatch = html.match(endTag); if (endTa

  • Java/Js下使用正则表达式匹配嵌套Html标签

    通用 HTML 标签区配正则 最近看网站日志,发现有人在博客上转了我不知道几年前写的一个匹配 HTML 标签的正则,刚好最近也在做一些相关的事情,顿时来了兴趣.就拿回来改改,成了下面这样,可能会有一些 case 遗漏,欢迎修改,已知在内嵌 <script> 复杂内容的处理能力较弱,不过对纯 HTML 来说已经够用,拿来做一些分析工具还是不错滴. 复制代码 代码如下: <script type="text/javascript"> var str = "

  • 正值表达式匹配html标签的属性值

    正则表达式是做文本解析工作必不可少的技能.如Web服务器日志分析,网页前端开发等.很多高级文本编辑器都支持正则表达式的一个子集,熟练掌握正则表达式,经常能够使你的一些工作事半功倍.例如统计代码行数,只需一个正则就搞定.嵌套Html标签的匹配是正则表达式应用中一个比较难的话题,因为它涉及到的正则语法比较多,也比较难.因此也就更有研究的价值. 今天由于工作的需求,需要获取html标签的属性值,立即想到了正则表达式,标签如下: <circle id="ap_test" cx="

  • JAVA过滤标签实现将html内容转换为文本的方法示例

    本文实例讲述了JAVA过滤标签实现将html内容转换为文本的方法.分享给大家供大家参考,具体如下: /** * 把html内容转为文本 * @param html 需要处理的html文本 * @param filterTags 需要保留的html标签样式 * @return */ public static String trimHtml2Txt(String html, String[] filterTags){ html = html.replaceAll("\\<head>[\

  • java正则匹配HTML中a标签里的中文字符示例

    本文实例讲述了java正则匹配HTML中a标签里的中文字符.分享给大家供大家参考,具体如下: 今天群里一位朋友问到了一个正则表达式的问题,有如下内容: <a href='www.baidu.comds=id32434#comment'rewr>特432</a> 453543 <a guhll,,l>a1特123你好123吗?</a> <a href=id=32434#comment'ewrer>特2</a> <a>标签中的

  • 什么情况下可以不写PHP的闭合标签“?>”

    在一些PHP项目里我们经常会看到有些PHP文件中的代码是只有开始标签,而没有结束标签的,那么什么情况下可以不写这个结束标签,而什么情况下又必须写? 对此我们先来看2个例子: 下面的代码可以正常运行: <?php echo 123456; 下面的代码会报错: <?php echo 123456; <p>abc</p> 原因分析: 前者是纯php代码,可以不写结束标签,也不推荐写结束标签:后者除了php代码,还有html代码,必须要写结束标签.   那么为什么不推荐前者写结

  • php截取字符串并保留完整xml标签的函数代码

    复制代码 代码如下: <?php      /**      * author: goosman      * blog: http://blog.csdn.net/lgg201      * mail: lgg860911@yahoo.com.cn      */ $str    = '0123456789<a>012</a>0123456789';      function substr_remain_tag($s, $o, $l) {          $is_mat

  • PHP实现补齐关闭的HTML标签

    本文实例讲述了PHP实现补齐关闭的HTML标签.分享给大家供大家参考,具体如下: 很多时候,在我们做文章截取摘要的时候,如果出现HTML的内容,会出现截取的文章没有结束的HTML标签.这样的情况下就会出现页面样式错乱的问题.这 个时候我们需要的就是把缺少的结束标签加批量加上.在www.php.net官网看到一个比较好处理的一个函数,展示如下: function CloseTags($html) { // strip fraction of open or close tag from end (

  • php使HTML标签自动补全闭合函数代码

    简单解释一些代码: 第一个 ~(<[^>]+?>)~si 这个正则是匹配<--->中的内容.简单说是所有的<标签>. 第二个 ~<([a-z0-9]+)[^/>]*?/>~si 这个正则是匹配<--/>中的内容.是单闭合标签 如<br /> 第三个 ~</([a-z0-9]+)[^/>]*?>~si 这个正则是匹配</......>中的内容.也就是结束标签 如</a> 第四个 ~&

随机推荐