到目前为止,仍在搜索如何执行此操作,但没有成功。 我已经完成了一个脚本,可以在仅包含一次字母的列表中查找单词。可以。
现在,我想制作一个脚本来查找txt文件列表中的单词,例如这样的单词:W ??? EB ?? RD?。每个字母的位置都很重要。我只需要找到适合的词即可。缺少的字母是?。
有人可以帮我吗?
到目前为止已完成:
$letters = "[A-Z]HITEBOARDS";
$array = explode("\n", file_get_contents('test.txt'));
$fl_array = preg_grep("[A-Z]HITEBOARDS", $array);
echo $array[0];
echo $array[1];
echo $array[2];
echo $array[3];
var_dump($fl_array);
答案 0 :(得分:0)
正如我在评论中提到的,您的正则表达式缺少分行符
$fl_array = preg_grep("[A-Z]HITEBOARDS", $array);
应该是
$fl_array = preg_grep("/[A-Z]HITEBOARDS/", $array);
您可以或应该在单词前后添加单词边界\b
,这将防止匹配部分单词,例如(例如)如果您有可以匹配{{1}的/\b[A-Z]here\b/
},而不只是therefore
。没有边界,匹配可能会出现在分词的开头,中间或结尾,这可能不是您想要的。边界将匹配there
或换句话说不是\W
或更简单的\w
或英语的任何内容:匹配任何不包含字母,数字或下划线的内容,基本上是所有标点符号,特殊字符([^a-z0-9_]
除外)和空格。
因此,将其放在代码中将是这样:
_
也可以代替
: $fl_array = preg_grep("/\b[A-Z]HITEBOARDS\b/", $array);
您可以使用
$array = explode("\n", file_get_contents('test.txt'));
首选$array = file('test.txt', FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
函数是因为它根据行尾将文件分成一个数组(爆炸不依赖于操作系统file
与\r\n
)。除了更好的性能,它还有两个非常有用的标志。 \n
是给定的,因为它删除了通常由FILE_IGNORE_NEW_LINES
保留在数组中的行尾。 file()
基本上会按照说的去做,并跳过空的行。
干杯。