我们有一些字符串$text="Here are some text. The word is inside of the second sentence.";和$word="word";
How to get $sentence="The word is inside of the second sentence"; -包含" ".$word." "的第一句话
当然,也应该做一些假设。其中之一是所有句子都以".\r\n"或"!\r\n"或". "或"! "结尾。
附言:我们确信strpos($text," ".$word." ")!==false
发布于 2013-02-01 22:26:56
您的文本:
$txt = "word word word different. different word word word. word word word ending. word word word";我的话是“不同的”:
$word = "different";让我们做一个preg匹配:
$c=preg_match("/(\.|^)([^\.]*?".$word."[^\.]*(\.|$))/",$txt,$match);如果成功,则显示包含该句子的第二组:
if($c!==false and count($match) > 0 )
echo( $match[2]) ;这将返回第一个实例。如果您想要全部使用preg_match_all。
发布于 2013-02-01 22:26:45
你可以使用类似这样的东西:
<?php
$text="Here are some text. The word is inside of the second sentence. And the word is also in this sentence!";
$word = 'word';
function getSentenceByWord($text, $word) {
$sentences = preg_split('/(\.|\?|\!)(\s)/',$text);
$matches = array();
foreach($sentences as $sentence) {
if (strpos($sentence,$word) !== false) {
$matches[] = $sentence;
}
}
return $matches;
}
print_r(getSentenceByWord($text, $word));
?>返回:
Array
(
[0] => The word is inside of the second sentence
[1] => And the word is also in this sentence!
)发布于 2013-02-01 22:38:14
没有正则表达式,只有一个分隔符".":
<?php
$text="Sentence one. Sentence two. Sentence three. Sentence four.";
$word_pos = strpos($text, "Sentence");
$start = strrpos(substr($text, 0, $word_pos), ".");
$end = strpos(substr($text, $word_pos), ".");
$start = $start ? $start + 2 : 0;
$end = $end + $word_pos + 1 - $start;
$sentence = substr($text, $start, $end);
echo $sentence;https://stackoverflow.com/questions/14648174
复制相似问题