用于查找字符串中任何位置的 'anything <script>anything</script> anything' 的正则表达式

regular expression for finding out 'anything <script>anything</script> anything' anywhere in string

我正在尝试在我的 php 中找出 open() 和 close() 的凭据标签 string.Please 在下面找到我的代码

public function custom_xss_clean($str){
  if(!preg_match('/(<\/?)(script|html)(>*)/i', $str)){
       return true;
  } else {
    $this->form_validation->set_message('custom_xss_clean','The %s field invalid');
    return false;
  }
}

此代码在在线工具中运行良好,但在我的字符串代码中运行不正常

<script>alert(10)</script>

我试了很多模式都没有luck.Please提前谢谢。

你的意思是你想要获取脚本标签之间的所有内容?

<?php
    preg_match_all("|<[^>]+>(.*)</[^>]+>|U","<script>example: </script><div align=left>this is a test</div>",$out, PREG_PATTERN_ORDER);
    echo '<pre>',
    print_r($out);

如果您在 codeigniter 中寻找 xss_clean 然后按照这个 link click

试试这个

preg_match('/<script>[a-zA-Z0-9 \. \n \t\r \* \ \* ~`!@#$%^&*()-_+={}\[\]\'":;?\/><.,|]*<\/script>/', $str);

我已经测试过了,你也可以实时查看 https://regex101.com/r/ih2C3F/1/