duanpoqiu0919
2017-06-19 15:48 阅读 20
已采纳

php在x char之后拆分字符串但仅限于句点

I have a string of 5000 char and I want to split it in small chunks of 200 char, split_str() function does that but I would like the strings chopped at the last full stop in the string rather than cutting a word or sentence in half.

here is an example:

<?php
$str = '<h1>Samsung Z4. smartphone com Tizen. pode estar perto de ser lançado em novo país<h1>';
$arr = str_split($str, 20);

?>

OutPut is:

Samsung Z4. smartpho

But i need it to be smart and give me just 'Samsung Z4.'

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    du9537 du9537 2017-07-01 14:51
    $last_space = strpos($str, '. ',4000);
    $next_part = substr($str, $last_space);
    //var_dump($next_part);
    $my_part = substr($str, 0 ,$last_space);
    //var_dump($my_part);
    $array[] =  $my_part;
    $str = $next_part;
    }
    while($last_space);
    array_push($array,$str);
    
    点赞 评论 复制链接分享
  • duanjianfu1398 duanjianfu1398 2017-06-19 16:16

    Use a loop with strpos. Ensure the period you find is followed by two spaces and then a capital letter (assuming that's your rule for "last full stop in the string), add that to your array of sentences and continue.

    Here's a super simple implementation that does what you requested in the comments:

    <?php
    $str = "Samsung Z4. smartphone com Tizen. pode estar perto de ser lançado em novo país";
    $sentences = array();
    $sentences = explode(".", $str);
    echo $sentences[0];
    
    点赞 评论 复制链接分享

相关推荐