Regex来匹配HTML标记内的属性,该标记可能包括php代码
Regex to match attributes inside an HTML tag which may include php code
通常我会将HTML属性与此regex 进行匹配
'w+=".*?"
但当HTML包含PHP代码时,它会变得有点挑剔。请考虑以下标签:
<option value="<?php echo $img; ?>"<?php echo ($hpb[$i]['image_filename']==$img?' selected="selected"':''); ?>>
<?php echo $img; ?>
</option>
上述正则表达式将匹配在PHP逻辑内部确定的属性CCD_ 1。有没有一种方法可以匹配不在PHP标记中的属性,同时仍然匹配那些值可能包含PHP逻辑的属性?如果不能,我可以删除不属于属性值的PHP代码吗?
编辑:以下是我目前所拥有的:
'w+="(((.(?!<'?php))*?)|((.((?=<'?php).*?(?='?>))*)*?))*"
这基本上意味着匹配一个以空格开头的字符串,然后贪婪地匹配字母数字字符,后跟等号,后跟双引号,然后匹配以下两个字符中的任何一个,同时捕获尽可能多的字符:
- 不包含字符串
<?php
的字符序列 - 包含模式
<'?php.*?'?>
的字符序列,或者换句话说,将属性的值部分与其所有PHP代码贪婪地匹配所有这些,直到遇到一个双引号结束
/<'?php['s'S]*?'?>|'s+('w+)="([^"<]*(?:<'?php['s'S]*?'?>[^<"]*)*)"/
这将与匹配一个PHP代码段或完整的attribute="value"
序列,其中的值可能包含PHP代码。每次比赛结束后,你可以通过检查捕捉组的内容来找出你捕捉到的东西。如果它是您匹配的纯PHP段,则除group[0]
之外的所有段都将为空;否则,group[1]
将包含属性名称,group[2]
将包含值。
正则表达式假定<
将仅出现在属性值内作为<?php
标记的开头。当然,这不是一个语法上有效的假设,但无论如何,它可能是安全的。如果需要的话,我可以使正则表达式更精确,但它的可读性也会差得多。
相关文章:
- 如何在php变量中嵌入JQuery代码
- php代码在textbox更改事件上显示null
- 在CodeIgniter视图中将Javascript或jQuery代码作为PHP文件编写可以吗
- 如何检查这个代码点火器php函数是否工作,该函数是否在ajax url中使用
- 使用PHP来阻止用户下载代码,但代码占用cpu
- 使用解析为javascript源的.php,如何使用条件语句将javascript代码封装在php括号之间
- 无法运行php代码,有角度路由问题
- php javascript代码从javascript调用php函数
- jquery中的PHP代码不起作用
- 如何在脚本部分使用php部分代码中的变量
- 获取PHP代码中日期选择器的值
- PHP代码古埃及乘法javascript
- 使用php或javascript根据某种url代码更改网页中的图片
- 代币违法;PHP内部JavaScript代码
- PHP代码中实现的JavaScript |if语句不起作用
- HTML 看不到 Javascript 代码;PHP 代码中的执行中断而没有错误
- 带有哈希密码的代码 PHP 无法工作
- 通过ajax或直接输出的行业标准代码PHP和JSON数据
- 检查MySQL数据库并添加代码PHP
- 将回显的HTML代码(PHP)追加到Javascript