[英]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.