【问题标题】:Find words from text file containing 2 specified letters using php使用php从包含2个指定字母的文本文件中查找单词
【发布时间】:2014-04-18 12:14:30
【问题描述】:

我有一个文本文件中的单词列表说:

Adam
Tony
Bob
Chris
Tommy

我有两个字母说t & y

我需要在列表中找到包含这两个字母的单词。我该怎么做?

【问题讨论】:

    标签: php arrays find words


    【解决方案1】:

    使用file()preg_grep()file() 将单词加载到数组中,preg_grep() 返回匹配模式的数组条目。

    $words = file('file.txt', FILE_IGNORE_NEW_LINES);
    $letters = array('t','y');
    $result = preg_grep('/[ty]/', $words);
    

    输出:

    Array
    (
        [1] => Tony
        [4] => Tommy
    )
    

    Demo

    【讨论】:

    • 我正在寻找一个可以共享 php 代码并显示输出的站点。您正在使用它来进行演示。我肯定会一直使用它。
    • @Jouke:这些可能有用,然后:3v4l.org(允许您在 150 多个 PHP 版本中进行测试)、codepad,orgcodepad.viper-7.com(启用了allow_url_fopen() 等)。
    【解决方案2】:

    你可以这样做..

    <?php
    $arr = file('names.txt');
    foreach($arr as $v)
    {
        if(strpos($v,'t')!==false && strpos($v,'y')!==false)
        {
            echo $v;
        }
    }
    

    解释:

    使用file() 将名称从文本文件中抓取到一个数组中。接下来,您通过逐个循环名称来执行foreach。现在检查名称中是否存在ty,找到后,打印此人的姓名。

    使用array_map()

    array_map(function ($v){ echo (stripos($v,'t')!==false && stripos($v,'y')!==false) ? $v :'';},file('new.txt'));
    

    EDIT :

    如果有 2 个字母和我相同,那该怎么办? 想要包含该字母两次的单词..??

    <?php
    $names=array('jimmy','jacky','monty','jammie');
    $v='m'; //<-- Lets's search for twice of m occurence
    
    foreach($names as $v1)
    {
     $arr=array_count_values(str_split($v1));
      if($arr[$v]==2)
       {
        echo $v1."\n";
       }
    }
    

    解释:

    正如您所见,jimmyjammie 作为输出返回,因为我们正在搜索 m 字母并且它们出现了两次,因此我们将它们打印出来,而 jackymonty被忽略。

    OUTPUT:

    jimmy
    jammie
    

    Demo

    【讨论】:

    • 非常感谢!如果有 2 个字母相同,我想要包含该字母的单词两次..??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多