在一个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
答案 0 :(得分:0)
/<\?php\s+echo\b(?:.(?!<[a-z]))*?\?>/gsi
https://regex101.com/r/hDufvl/5
我认为这可能会让您对您的报道产生误解。什么都没有取代适当的评论。