(让我们有一个良好的开端:我很抱歉我的英语不好。)
我正在使用Php5 +。
这就是事情:我试图从一个特定单词周围的长文本中获取5或6个字长的摘录(提取?)。
使用以下文字:
Hello my name is Bryan, I am in the kitchen but I do love umbrellas and cats. I'm not a dog person.
如果我的目标是“厨房”这个词,我想获得:
"[...] in the kitchen but I do [...]"
我想我必须使用正则表达式和东西,但说实话我不知道该怎么做。
并且在更难的方式中,我希望得到与文本中遇到的单词一样多的摘录。
你的建议。
答案 0 :(得分:2)
我猜你正在寻找类似的东西:
<?php
$subject = "Hello my name is Bryan, I am in the kitchen but I do love umbrellas and cats. I'm not a dog person.";
$pattern = '/\w+\s+\w+\s+kitchen\s+\w+\s+\w+\s+\w+/';
preg_match($pattern, $subject, $tokens);
var_dump('[...] ' . $tokens[0] . ' [...]');
输出显然是:
string(35) "[...] in the kitchen but I do [...]"
答案 1 :(得分:0)
对于你的建议人员,我找到了解决方案。
我使用了正则表达式,因为split/explode
是有限的(你可以只用一个字符分割,有时你想要这个字符,所以即使preg_split
也不好)
因为我想找到特定的单词,即使它在一行的开头/结尾,在其他单词之间或在一个句子的开头/结尾等,我做了这个正则表达式:
((?:[\p{L}.,?!;:]+ +){1,3}|\b)(kitchen)((?:[ ',]+[\p{L}.,?!;:']+){1,3}|\b)
如果你有更好的,请告诉我。如果您对此有疑问,请问我!