Mad_Geek
2017-11-30 05:36
采纳率: 70.8%
浏览 3.3k
已采纳

PHP用preg_match_all正则多个关键字怎么写?

语言PHP
想用preg_match_all来正则一个字符串中包含了多此次自定义的标签

例如标签里面有 : 你好、中国、国家、新年、娱乐、程序、羁绊、www.baidu.com
待处理的字符串:阿斯顿TV u有单反啊送分国家v晕车i哦弄请问娱乐哦怕麻烦NSA大佛你程序i哦就拿谁都i那都

然后就是判断字符串是否包含上面的标签,包含了多少个
我现在写出来的中文可以 但是像英文就不行
例如像标签里面的“www.baidu.com”
他不会去匹配字符串里面的 www.baidu.com 而是把 w、b、a、u、c等等这些字符匹配出来了

代码:



$pattaern0='/[你好|中国|国家|新年|娱乐|程序|羁绊|www.baidu.com|google]+/u';
if(preg_match_all($pattaern0,$str,$matches1))
{
var_dump($matches1[0])
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • 已采纳

    []改为()

     $pattaern0='/(你好|中国|国家|新年|娱乐|程序|羁绊|www\\.baidu\\.com|google)+/u';
    
    点赞 评论
  • 大宇私人伊甸园 2017-11-30 06:04
            $pattaern0 = '/(\w+)www.(\w+).(com|org)/';  
        $str = "/[你好|中国|国家|新年|娱乐|程序|羁绊|www.baidu.com|google]+/u";  
        preg_match($pattaern0, $str, $match);  
        print_r($match);  
    
    点赞 评论
  • 大宇私人伊甸园 2017-11-30 06:06
    $pattaern0 = '/(\w+)www.(\w+).(com|org)/';  
    $str = "/(你好|中国|国家|新年|娱乐|程序|羁绊|www.baidu.com|google)+/u";  
    preg_match($pattaern0, $str, $match);  
    print_r($match); 
    
    点赞 评论
  • 小熊开发 2017-11-30 14:03

    去掉中括号以及后面的+号即可

     $pattaern0='/你好|中国|国家|新年|娱乐|程序|羁绊|www.baidu.com|google/u';
    if(preg_match_all($pattaern0,$str,$matches1))
    {
    var_dump($matches1[0])
    }
    
    点赞 评论
  • 小熊开发 2017-11-30 14:06

    如果不去掉后面的+号,当出现:你好你好这种时,只能统计算1个,所以必须去+号

    点赞 评论
  • 小熊开发 2017-11-30 14:14

    .也是需要转义的,不转义www+baidu+com这种也能匹配到,所以完整的应该这样

     $pattaern0='/你好|中国|国家|新年|娱乐|程序|羁绊|www\.baidu\.com|google/u';
    if(preg_match_all($pattaern0,$str,$matches1))
    {
    var_dump($matches1[0])
    }
    
    点赞 评论
  • 小熊开发 2017-11-30 14:19

    []里面的内容只能按单字匹配,所以你看到其它人改为(),()则是按词计算
    +则是重复连续出现算一个匹配,所以要去掉+
    如果不区分大小写,最后应该加上i修饰 /你好|中国|国家|新年|娱乐|程序|羁绊|www.baidu.com|google/ui

    点赞 评论
  • 蜡笔小芯芯 2018-01-16 07:48

    var obj = {email:'name1.com',company_name:'echemi',name:'echemi123'}
    var matcher = /n/i //console.log(matcher.test(obj)) false
    // var matcher = /e/i //console.log(matcher.test(obj)) true
    // var matcher = /c/i //console.log(matcher.test(obj)) true
    // var matcher = /ec/i //console.log(matcher.test(obj)) true
    console.log(matcher.test(obj))

    点赞 评论

相关推荐 更多相似问题