我已经google了一个正则表达式来抓取并阅读了一些教程,我似乎无法得到一个可靠的正则表达式来执行此操作。
我需要做的是编写一个与字符串中的PHP标记匹配的JavaScript正则表达式。
我继承了一个大型的php项目,其中混合了html和php的视图不是很易读。所以我正在做的是编写一个IDE扩展,供我个人使用,以删除在php视图中混合的php,以便在其上运行HTML缩进脚本,而不会混淆HTML缩进脚本。然后在缩进脚本完成后我回去重新插入php。
到目前为止我所拥有的是(我从一个寻找括号[]的正则表达式中转换了这个,我知道它不会匹配所有内容,但它让我远远超出了我的IDE扩展程序):
var php_tag_pattern = /<\?[^<>]*\?>/;
现在由于显而易见的原因,它不匹配代码如下:
<?=$common->format_number($acct_info['number'])?>
或者这个:
<?
$wifi = $wifi_lib->wifi_radius($v['radiusgroupname']);
if (!empty($wifi)) :?>
过去几个小时我一直在搞乱这个问题,所以我想我最终会寻求帮助,看看我错过了什么。
谢谢!
答案 0 :(得分:5)
要匹配多行php文本,您需要在Javascript中实现DOTALL。不幸的是,Javascript没有s
标志,但有一种解决方法。试试这段代码:
var php_tag_pattern = /<\?[=|php]?[\s\S]*?\?>/;
[\s\S]
将确保在多行中匹配php文本,包括新行。
答案 1 :(得分:0)
var php_tag_pattern = /<\?=?.+?\?>/;
答案 2 :(得分:0)
var regex = /<\?[=|php]?[^<>]*\?>/;
您还需要使用多线修改器new RegExp(regex, "gim")
。 'g'是全局的,'i'不区分大小写,'m'是多行的。