我希望匹配该行上匹配单词/短语的整行! 我试过这个:
preg_match("/PHRASE/i", $dictionary,$matches);
但我只得到匹配的字!但我需要整条线!超过15K线!
答案 0 :(得分:4)
只需使用
^.*PHRASE.*$
^
以匹配行的开头
.*
匹配除换行符之外的任意数量的字符
PHRASE
以匹配您的关键字/词组
.*
如上所述
$
以匹配该行的结尾。
您可能还希望将PHRASE
用词边界锚定(如果您的词组确实是单词或单词):^.*\bPHRASE\b.*$
仅在PHRASE
独立时才匹配(而不是像PHRASEBOOK
)这样的另一个词的一部分。
因此,如果您将正则表达式分别应用于每一行,请使用
preg_match('/^.*PHRASE.*$/i', $dictionary, $matches)
如果您的所有行都在一个长多行字符串中,并且想要遍历包含您的短语的所有行,请使用:
preg_match_all('/^.*PHRASE.*$/im', $dictionary, $matches, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($matches[0]); $i++) {
# Matched text = $matches[0][$i];
}
请注意/m
修饰符,以允许^
和$
在每行的开头和结尾匹配(而不仅仅是字符串的开头/结尾)。
答案 1 :(得分:3)
使用类似:
$handle = @fopen("file.txt", "r");
if ($handle)
{
$matches = array();
while (!feof($handle))
{
$buffer = fgets($handle);
if(stripos($buffer,"mystring") !== false)
{
$matches[] = $buffer;
}
}
fclose($handle);
}
然后您可以在$matches
答案 2 :(得分:1)