【发布时间】:2014-04-18 12:14:30
【问题描述】:
我有一个文本文件中的单词列表说:
Adam
Tony
Bob
Chris
Tommy
我有两个字母说t & y
我需要在列表中找到包含这两个字母的单词。我该怎么做?
【问题讨论】:
我有一个文本文件中的单词列表说:
Adam
Tony
Bob
Chris
Tommy
我有两个字母说t & y
我需要在列表中找到包含这两个字母的单词。我该怎么做?
【问题讨论】:
使用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
)
【讨论】:
allow_url_fopen() 等)。
你可以这样做..
<?php
$arr = file('names.txt');
foreach($arr as $v)
{
if(strpos($v,'t')!==false && strpos($v,'y')!==false)
{
echo $v;
}
}
使用file() 将名称从文本文件中抓取到一个数组中。接下来,您通过逐个循环名称来执行foreach。现在检查名称中是否存在t 或y,找到后,打印此人的姓名。
使用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";
}
}
正如您所见,jimmy 和 jammie 作为输出返回,因为我们正在搜索 m 字母并且它们出现了两次,因此我们将它们打印出来,而 jacky 和 monty被忽略。
OUTPUT:
jimmy
jammie
【讨论】: