Does anyone have a PHP snippet of code for grabbing the first “sentence” in a string?

前端 未结 7 1157
刺人心
刺人心 2021-02-14 02:28

If I have a description like:

\"We prefer questions that can be answered, not just discussed. Provide details. Write clearly and simply.\"

相关标签:
7条回答
  • 2021-02-14 02:31

    My previous regex seemed to work in the tester but not in actual PHP. I have edited this answer to provide full, working PHP code, and an improved regex.

    $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]);
    }
    
    0 讨论(0)
  • 2021-02-14 02:36

    Try this:

    $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 . '.'; 
    
    }
    

    Output is:

    My name is Younas. I live on the pakistan.

    0 讨论(0)
  • 2021-02-14 02:47
    <?php
    $text = "We prefer questions that can be answered, not just discussed. Provide details. Write clearly and simply.";
    $array = explode('.',$text);
    $text = $array[0];
    ?>
    
    0 讨论(0)
  • 2021-02-14 02:49

    Try this:

    reset(explode('.', $s, 2));
    
    0 讨论(0)
  • 2021-02-14 02:49

    A slightly more costly expression, however will be more adaptable if you wish to select multiple types of punctuation as sentence terminators.

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

    Find termination characters followed by a space

    $sentence = preg_replace('/(.*?[?!.](?=\s|$)).*/', '\\1', $string);
    
    0 讨论(0)
  • 2021-02-14 02:56
    current(explode(".",$input));
    
    0 讨论(0)
提交回复
热议问题