繁体   English   中英

php正则表达式负向前瞻找到任何地方

[英]php regex negative lookahead find anywhere

在一个php文件中,我想找到所有回显某些东西的行,但是echo不包含任何HTML。 这样做的目的是进行搜索替换以实现XSS保护。

我的测试字符串如下所示:

<?php foreach($this->userlist as $u) { ?>
      <option value="<?php echo '<h1>'.$u['user_id'];?>" <?php echo $this->wfe->job['created_by']==$u['user_id']?'selected':'';?>><?php echo $u['real_name'];?></option>
<?php }; ?>

我的常规“基础”表达是:

<\?php\secho\s(.*?)\?>

然后我尝试在我的比赛No1中插入各种负向前瞻表达式:

(?!('<)) - excludes my '<h1>' tag echo successfully

(?!(\$)) - excludes my other echo statements

然而

(?!^.*<[^>]+.*) - does not exclude any of my echo statements
(?!.*<[^>]+.*) - excludes all of my echo statements

我怎样才能排除我的echo语句,包括?

我在这里记录了正则表达式: https//regex101.com/r/hDufvl/2

/<\?php\s+echo\b(?:.(?!<[a-z]))*?\?>/gsi

https://regex101.com/r/hDufvl/5

我认为这可能会让你对你的报道产生误解。 没有什么能取代适当的评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM