使用php从包含2个指定字母的文本文件中查找单词

时间:2014-04-18 12:14:31

标签: php arrays find words

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

Adam
Tony
Bob
Chris
Tommy

我有2个字母说t& y

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

2 个答案:

答案 0 :(得分:3)

使用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

答案 1 :(得分:1)

你可以这样做..

<?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 :

  

虽然有两个字母是相同的但是我   想要包含那封信两次的话...... ??

<?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字母,并且它们有两次出现,因此我们将它们打印出来,而{ {1}}和jacky会被忽略。

<强> monty

OUTPUT:

Demo