【发布时间】:2018-03-04 12:13:01
【问题描述】:
我有一个计划,从我准备的txt文件中进行搜索,txt文件内容类似下面这样
一个.txt
Amy Jefferson
Nathalie Johnson
Emma West
Donna Jefferson
Tanya Nathalie
George West
Emma Watson
Emma Jefferson
如果代码是这样的
一个.php
$filename = "a.txt";
$example = file($filename, FILE_IGNORE_NEW_LINES);
$searchword = 'Emma Jefferson';
$matches = array();
foreach($example as $k=>$v) {
if(preg_match("/\b$searchword\b/i", $v)) {
$matches[$k] = $v;
echo $matches[$k]."<br>";
}
}
结果只会是“Emma Jefferson”
如果我使用这个代码
b.php
$filename = "a.txt";
$example = file($filename, FILE_IGNORE_NEW_LINES);
$searchword = 'Emma Jefferson';
$matches = array();
foreach($example as $k=>$v) {
$searchword2 = str_ireplace(" ", "|", $searchword);
if(preg_match("/\b$searchword2\b/i", $v)) {
$matches[$k] = $v;
echo $matches[$k]."<br>";
}
}
结果会是这样的
Amy Jefferson
Emma West
Donna Jefferson
Emma Watson
Emma Jefferson
唯一的结果,但最后一个结果是“Emma Jefferson”
所以问题是我如何搜索 Emma Jefferson,结果排序是这样的
Emma Jefferson
Emma Watson
Emma West
Amy Jefferson
Donna Jefferson
所以基本上它首先搜索“Emma Jefferson”整个单词,然后是“Emma”,最后一个是“Jefferson”
更新 我为这个问题投票支持 Don't Panic 代码,但我想在这里感谢所有贡献者 Don't Panic、RomanPerekhrest、Sui Dream、Jere、i-man,你们都是最棒的!
帕蒂极客
【问题讨论】:
标签: php