美文网首页
今天遇到的两个坑

今天遇到的两个坑

作者: 鸿雁长飞光不度 | 来源:发表于2018-01-23 14:15 被阅读0次

    把一份doc文件的单词文档直接打开,复制后粘贴到一个text文件想提取里面的单词到新文件。一直不成功。

    内容如下

    大学英语六级考试大纲词汇 A abbreviation n.节略,缩写,缩短 abide vt.遵守 vt.忍受 abolish vt.废除,取消 absent a.不在意的 absorption n.吸收;专注 abstract a.理论上的 n.抽象

    并不难写出下面的形式,而且在各个正则在线测试的网站上也通过了,只要提取$1就可以了。

    \s+([a-zA-Z]+)\s+([a-zA-Z]+\.)
    
    image.png

    但是在用本地php提取的时候数组总是空的,找不到原因。怀疑本地环境的问题,所以找了个在线的php运行网站准备实验下,突然发现


    image.png

    原来的空格变成了一系列的点,这些点是一个字符,鼠标单击能选中全部。也许在线正则测试环境对字符串做了处理,而自己没有处理,\s不能匹配这些点。所以手动的去替换了这些空格,然后重新观察规律发现没有那么复杂

    \w+(?=\s+)
    

    上述表示


    image.png

    \w在.net环境下支持中文的,其他环境支不支持要自己去测试或者查看文档。

    一个小细节没注意,下面循环里的item=[];必须保留,否则结果异常。

    
     for ($i = 0;$i< count($questions); $i++) {
                if (in_array($questions[$i]['partition_id'],$partitions)){
                    for ($j = 0;$j < count($contents);$j++){
                        if ($contents[$j]['partition_id'] == $questions[$i]['partition_id']){
                            echo $i ."---". $j;
                            unset($questions[$i]['content']);
                            $contents[$j]['list'][] = $questions[$i];
                            break;
                        }
                    }
    
                }else{
                    $item = [];
                    $item['content'] = $questions[$i]['content'];
                    $item['partition_id'] = $questions[$i]['partition_id'];
                    unset($questions[$i]['content']);
                    $item['list'][] = $questions[$i];
                    $partitions[] = $questions[$i]['partition_id'];
                    $contents[] = $item;
                }
            }
    

    相关文章

      网友评论

          本文标题:今天遇到的两个坑

          本文链接:https://www.haomeiwen.com/subject/fsdsaxtx.html