1

我们有一些字符串$text="Here are some text. The word is inside of the second sentence.";$word="word";

如何获取$sentence="The word is inside of the second sentence";- 包含的第一句话" ".$word." "

当然应该做一些假设。其中之一是所有句子都以".\r\n"or"!\r\n"或 or". "结尾"! "

PS我们确定strpos($text," ".$word." ")!==false

4

3 回答 3

1

你可以使用这样的东西:

<?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-01T14:26:45.303 回答
1

你的文字:

$txt = "word word word different. different word word word. word word word ending. word word word";

我的话是“不同”:

$word = "different";

让我们做一个预赛:

$c=preg_match("/(\.|^)([^\.]*?".$word."[^\.]*(\.|$))/",$txt,$match);

如果成功,则显示包含以下句子的第二组:

if($c!==false and count($match) > 0 )
    echo( $match[2]) ;

这将返回第一次出现。如果你想全部使用 preg_match_all。

于 2013-02-01T14:26:55.897 回答
0

没有正则表达式,只有一个分隔符“.”:

<?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;
于 2013-02-01T14:38:13.853 回答