有没有人有代码字符串中抓住了第一个“句”一个PHP代码片段?(Does anyone have a

2019-07-30 06:33发布

如果我有一个类似的说明:

“我们更希望能得到解答,而不仅仅是讨论的问题。提供细节。写清楚和简单。”

和所有我想要的是:

“我们更希望能得到解答,而不仅仅是讨论的问题。”

我想我会寻找一个正则表达式,如“[!\?]”,决定对strpos然后执行从主字符串SUBSTR,但我想它是做一个平常的事,所以希望有人有一个片段躺在周围。

Answer 1:

稍微更昂贵的表情,如果你想选择多种类型的标点符号作为句子终止但会更加适应。

$sentence = preg_replace('/([^?!.]*.).*/', '\\1', $string);

查找结束符后面有一个空格

$sentence = preg_replace('/(.*?[?!.](?=\s|$)).*/', '\\1', $string);


Answer 2:

<?php
$text = "We prefer questions that can be answered, not just discussed. Provide details. Write clearly and simply.";
$array = explode('.',$text);
$text = $array[0];
?>


Answer 3:

我以前的正则表达式似乎在测试而不是在实际PHP工作。 我已编辑这个答案提供全面,工作PHP代码,以及改进的正则表达式。

$string = 'A simple test!';
var_dump(get_first_sentence($string));

$string = 'A simple test without a character to end the sentence';
var_dump(get_first_sentence($string));

$string = '... But what about me?';
var_dump(get_first_sentence($string));

$string = 'We at StackOverflow.com prefer prices below US$ 7.50. Really, we do.';
var_dump(get_first_sentence($string));

$string = 'This will probably break after this pause .... or won\'t it?';
var_dump(get_first_sentence($string));

function get_first_sentence($string) {
    $array = preg_split('/(^.*\w+.*[\.\?!][\s])/', $string, -1, PREG_SPLIT_DELIM_CAPTURE);
    // You might want to count() but I chose not to, just add   
    return trim($array[0] . $array[1]);
}


Answer 4:

试试这个:

$content = "My name is Younas. I live on the pakistan. My email is **fromyounas@gmail.com** and skype name is "**fromyounas**". I loved to work in **IOS development** and website development . ";

$dot = ".";

//find first dot position     

$position = stripos ($content, $dot); 

//if there's a dot in our soruce text do

if($position) { 

    //prepare offset

    $offset = $position + 1; 

    //find second dot using offset

    $position2 = stripos ($content, $dot, $offset); 

    $result = substr($content, 0, $position2);

   //add a dot

   echo $result . '.'; 

}

输出是:

我的名字是Younas。 我住在巴基斯坦。



Answer 5:

current(explode(".",$input));


Answer 6:

我可能会使用任意的字符串/字符串分割函数在PHP众人(这里有些已经提到)的。 还要考虑的 “ ”或“ \ n”(也可能是。 “\ n \ r ”),而不是仅仅“。” 以防万一,无论出于何种原因,这句话包含了后面没有空格的时期。 我认为这将强化你得到真正的结果的可能性。

例如,搜索只是“” 上:

"I like stackoverflow.com."

将让你:

"I like stackoverflow."

如果说真的,我相信你会喜欢:

"I like stackoverflow.com."

一旦你有一个基本的搜索,你可能会遇到一个或两个场合,可能会错过一些东西。 调为你运行它!



Answer 7:

试试这个:

reset(explode('.', $s, 2));


文章来源: Does anyone have a PHP snippet of code for grabbing the first “sentence” in a string?