• 技术文章 >后端开发 >PHP问题

    php正则如何不包含某字符串

    藏色散人藏色散人2020-11-20 09:42:13原创45

    php正则不包含某字符串的方法:首先创建一个PHP示例文件;然后通过正则表达式“ preg_match(”/[^(abc)]/s”, $str, $arr);”实现判断不包含某字符串即可。

    推荐:《PHP视频教程

    常见函数 strstr($str, “abc”);
    正则匹配 preg_match(”/(abc)?/is”, $str);
    但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了
    如果不用正则 !strstr($str, “abc”); 就可以解决问题了
    但是用正则呢,就只有这样了,”/^((?!abc).)*$/is”

    //------------------------------------------------ 
    代码如下:
     <?php 
      $str = "dfadfadf765577abc55fd"; 
      $pattern_url = "/^((?!abc).)*$/is"; 
      if (preg_match($pattern_url, $str)){ 
      echo "不含有abc!"; 
      }else{ 
      echo "含有abc!"; 
      } 
      ?> 
     
     //------------------------------------------------ 
     结果为:false,含有abc! 
     $str = “2b3c4d5c”; 
     注意:[^(abc)] 这个语法是逐个检查$str中的字符是否不在 a b c中, 
     preg_match(”/[^(abc)]/s”, $str, $arr); 
     其中字符 2 就不在 a b c 中,所以$arr返回值为2; 
     同时匹配,包含字符串 “abc”,而且不包含字符串 “xyz” 
     “/(abc)[^((?!xyz).)*$]/s”

    以下是补充:

    判断一个字符串中是否含有另一字符串,有很多方法,如下:

    1. 常见函数

    strstr($str, "abc");

    2. 正则匹配

    preg_match("/(abc)/is", $str);

    但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了。
    1. 如果不用正则如下就可以解决问题

    !strstr($str, "abc");

    2. 但是用正则呢,就只有这样了

    preg_match("/^((?!abc).)*$/is", $str);

    完整代码示例

    代码如下:

    $str = "dfadfadf765577abc55fd"; 
     $pattern_url = "/^((?!abc).)*$/is"; 
     if (preg_match($pattern_url, $str)) 
     { 
     echo "不含有abc!"; 
     } 
     else 
     { 
     echo "含有abc!"; 
     }

    结果为:false,含有abc!

    同时匹配,包含字符串 "abc",而且不包含字符串 "xyz"的正则表达式:

    preg_match("/(abc)[^((?!xyz).)*$]/is", $str);

    该方法有效,本人使用方法如下:

     (?:(?!<\/p>).|\n)*? //匹配不含</p>的一个字符串

    但最终使用中结果是发现,该方法效率极其低下,在处理非常短文字(要匹配该正则式的相同部分的有十几个字,或者最多几十个)时间可以考虑使用,但当用于大篇幅文章解析或多处需要改种匹配时间应不使用,考虑用其他方法替代(如:先解析出要匹配该段正则式的文字,然后验证其中是否存在某段文字),正则表达式对于匹配不含特定字符串的文字段时并不是非常有效的方法.

    以上就是php正则如何不包含某字符串的详细内容,更多请关注php中文网其它相关文章!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!
    专题推荐:php
    上一篇:如何解决php get 参数乱码问题 下一篇:iis 如何隐藏index.php
    第14期线上培训班

    相关文章推荐

    • php 正则表达式字符如何转义• vue.js怎么用正则校验• 分享一个匹配8-16位数字和字母密码的正则表达式• php正则如何实现全部替换字符串

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网