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

时间:2016-11-23 01:39:50

标签: php regex pcre

在一个php文件中,我想查找所有回显某些内容的行,但回显中不包含任何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

1 个答案:

答案 0 :(得分:0)

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

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

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