怎么把一句话中的所有术语查询出来呢?我有自己的术语词典。
有代码,最好了。

解决方案 »

  1.   


    $arr = array(
    'AAAA',
    'BBBB',
    'CCCC'
    );$str = "AAAA is good than CCCC";foreach($arr as $val){
    if(false !== strpos($str,$val))
    echo $val."<br />";}
      

  2.   


    $preg= "AAAA|BBBB|CCCC|DDDDD";$str = "AAAA is good than CCCC";if(preg_match_all("/$preg/i",$str,$m)){
    print_r($m);
    }
      

  3.   

    我测了下:$arr = array(//一百条数据
    "AAAAA0",
    "AAAAA1",
    ...
    "AAAAA99"
    )
    $str = "这是中文这是中文这是中文这是中文这是中文这是中文这是中文
    这是中文这是中文这是中文这是中文这是中文这是中文这是中文这是中文
    this is english,this is english,this is english,this is english,this is english,this is english,
    this is english,this is english,this is english,this is english,this is english,this is english,
    this is english,this is english,this is english,this is english,this is english,this is english,
    this is english,this is english,this is english,this is english,this is english,this is english,
    !@#$%^&*()_+!@#$%^&*()_+!@#$%^&*()_+!@#$%^&*()_+!@#$%^&*()_+!@#$%^&*()_+!@#$%^&*()_+!@#$%^&*()_+
    把数据往后放把数据往后放把数据往后放把数据往后放把数据往后放把数据往后放把数据往后放把数据往后放把数据往后放
    AAAAAA0######################AAAAA95AAAAA96AAAAA97AAAAA98AAAAA99";
    foreach($arr as $val){
    if(false !== strpos($str,$val))
    echo $val."<br />";}
    //输出为:
    AAAAA0
    AAAAA9
    AAAAA95
    AAAAA96
    AAAAA97
    AAAAA98
    AAAAA99
    Total in 0.00027585029602051 seconds 你难度是我一百倍行不,也难出一秒范围
      

  4.   

    本帖最后由 xuzuning 于 2012-08-11 11:05:40 编辑
      

  5.   

    后缀树,双数组trie都是干这个的。
      

  6.   


    就是按需要过滤的字符串进行分组,再分组,比如 需要过滤的字符串是 AAB  AAC  BBA BBC分成这样:
    $arr=array('A','B')
    $arr1=array(
       'A'=>array('AA'),'B'=>array('BB')
    )
    $arr2=array(
       'AA'=>array('AAB','AAC'),'BB'=array('BBA','BBC')
    )
    然后把需要过滤的字符串拆字,,再到数组中去查找,是这样吗?
      

  7.   

    字典 AAB AAC BBA BBC
    组织成
    array(
      'A' => array(
         'A' => array(
            'B' => array(),
            'C' => array(),
          ),
      ),
      'B' => array(
         'B' => array(
            'A' => array(),
            'C' => array(),
          ),
      ),
    )
    沿关联键递归进入直至空数组,表示匹配
      

  8.   

    假如现在已知需要过滤的字符串是中文,比如$arr=array( ‘台湾’,‘台北’,‘台南’,‘台湾北’,‘台湾东’,'台a','台b','台aa','台ab' );
    应该怎么进行分组呢?
      

  9.   

     ini_set("memory_limit","100M");
    class China{
    function chinafen($strs){
    $strs=trim($strs);
    $dicfile=dirname(__FILE__)."/zhongwen.txt"; 
    $file=fopen($dicfile,"r");
    while($str=fgets($file)){
        $arr[]=trim($str);
    }
    $match=array();
    $str=<<<EOF
    "$strs"
    EOF;
    for($i=0;$i<count($arr);$i++){
        if(@strpos($str,$arr[$i])){
            $match[]=$arr[$i];
        }   
    }
    fclose($file);
    print_r($match);
    return $match;
    }
    }
    代码帖上来,请大家改进,我还是菜鸟,哪位大哥说的trie算法,有源码么,能不能共享一下。
    eg:原句:"AUMARK"车侧标志,是一个温度传感器。
    要从二十万条数据里面,把这俩个词,找出来,
    ("AUMARK"车侧标志),(温度传感器)。英文和标点符号也要留下。请大侠指教源码最好了。谢谢各位了。