Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在文本文件中查找特定单词_Php_Regex - Fatal编程技术网

Php 在文本文件中查找特定单词

Php 在文本文件中查找特定单词,php,regex,Php,Regex,我想我有一个包含以下内容的文本文件: Hello my name is Jack Jordon. What is your name? Let there be a party. Is your name Jack Marais, I didn't think so Jack van Riebeeck. Good day Jack. 如何使用PHP查找所有“Jack”单词及其后的单词 因此,结果将是 Jack Jordon Jack Marais Jack van Jack 是否可以使用正则

我想我有一个包含以下内容的文本文件:

Hello my name is Jack Jordon. What is your name? Let there be a party. Is your name Jack Marais, I didn't think so Jack van Riebeeck. Good day Jack.
如何使用PHP查找所有“Jack”单词及其后的单词

因此,结果将是

Jack Jordon
Jack Marais
Jack van
Jack

是否可以使用正则表达式执行此操作,或者是否有更好的方法?

您可以在
preg\u match\u all
中使用此正则表达式:

'/\bJack\s+(?:\s+\w+|$)/'

此正则表达式只能在
Jack
或行尾后找到一个单词。

您可以在
preg\u match\u all
中使用此正则表达式:

'/\bJack\s+(?:\s+\w+|$)/'
此正则表达式将只在
杰克
或行尾后找到一个单词。

只需尝试使用:

$input  = 'Hello my name is Jack Jordon. What is your name? Let there be a party. Is your name Jack Marais, I didn\'t think so Jack van Riebeeck. Good day Jack.';
$search = 'Jack';

preg_match_all('/(' . $search . '[a-z ]*[A-Z][a-z]+)/', $input, $matches);
$output = $matches[0];
var_dump($output);
试一下:

$input  = 'Hello my name is Jack Jordon. What is your name? Let there be a party. Is your name Jack Marais, I didn\'t think so Jack van Riebeeck. Good day Jack.';
$search = 'Jack';

preg_match_all('/(' . $search . '[a-z ]*[A-Z][a-z]+)/', $input, $matches);
$output = $matches[0];
var_dump($output);
试试这个:

$yourSentend = "Hello my name is Jack Jordon. What is your name? Let there be a party. Is your name Jack Marais, I didn't think so Jack van Riebeeck. Good day Jack.";
$words = explode(' ', $yourSentence);
for ($i = 0, $m = count($words); $i < $m; $i++) {
    if ($words[$i] == 'Jack') {
        echo $words[$i].' '.$words[$i+1];
    }
}
$yourSentend=“你好,我叫杰克·乔登。你叫什么名字?开个派对吧。你叫杰克·马雷,我不这么认为。杰克·范·里比克。你好,杰克。”;
$words=爆炸(“”,$your句子);
对于($i=0,$m=count($words);$i<$m;$i++){
如果($words[$i]=='Jack'){
回显$words[$i].'.$words[$i+1];
}
}
这将回显每个插孔+下一个单词。

尝试以下操作:

$yourSentend = "Hello my name is Jack Jordon. What is your name? Let there be a party. Is your name Jack Marais, I didn't think so Jack van Riebeeck. Good day Jack.";
$words = explode(' ', $yourSentence);
for ($i = 0, $m = count($words); $i < $m; $i++) {
    if ($words[$i] == 'Jack') {
        echo $words[$i].' '.$words[$i+1];
    }
}
$yourSentend=“你好,我叫杰克·乔登。你叫什么名字?开个派对吧。你叫杰克·马雷,我不这么认为。杰克·范·里比克。你好,杰克。”;
$words=爆炸(“”,$your句子);
对于($i=0,$m=count($words);$i<$m;$i++){
如果($words[$i]=='Jack'){
回显$words[$i].'.$words[$i+1];
}
}
这将回显每个插孔+下一个单词。

您可以使用:

preg_match_all('~\bJack(?>\s+[a-z]+)?~i', $input, $matches);
print_r($matches[0]);
您可以使用以下选项:

preg_match_all('~\bJack(?>\s+[a-z]+)?~i', $input, $matches);
print_r($matches[0]);

van Riebeeck
是两个词。首先,你应该考虑你接受的名称,并指定你是否知道你要搜索的名称。例如,如果你有一个“Jack Van der Buren et Grumpli”或“Candle Jack”的表达,你也需要这些名字吗?使用正则表达式可以做很多事情,但首先你应该用两个词概括这些要求
van Riebeeck
。首先你应该考虑你接受的名称,并指定你是否知道你要搜索的名称。例如,如果你有一个“Jack Van der Buren et Grumpli”或“Candle Jack”的表达,你也需要这些名字吗?使用正则表达式可以做很多事情,但首先您应该概述这些要求
$string=“你好,杰克,我是我”
,在您爆炸后,您将无法匹配此
杰克,因为它是
杰克,
它将无法获得杰克。-但是如何使用文本文件呢?只需阅读文件的内容,然后将其放入$Your句子中。你可以太干净而不能移除“,”等。
$string=“你好,杰克,我是我”
,爆炸后,你将无法匹配此
杰克
,因为它是
杰克,
它不会得到杰克。-但是如何使用文本文件呢?只需阅读文件的内容,然后将其放入$Your句子中。您可以太干净而无法删除“,”等。这很有效。我已经测试过了,效果很好。我已经测试过了