提取以不在PHP中工作的单词结尾的子字符串

时间:2014-06-18 07:25:32

标签: php string codeigniter substr

我正在尝试从PHP中的字符串中提取子字符串。提取的子字符串应以单词结尾。我尝试使用以下代码,但我没有得到任何输出。

if (strlen($userresult->aboutme) > 20)    // value of $userresult->aboutme is 'Very cool and friendly'
{   
   $description=substr($userresult->aboutme, 0, strpos($userresult->aboutme, ' ', 20));
} 
else 
{
    $description=$userresult->aboutme;
}
echo $description;     // not outputting any result

我希望子字符串以一个单词结束。在这里,我希望输出为Very cool and friendly而不是Very cool and friend,这是我们尝试使用substr($userresult->aboutme, 0, 20);时的输出。我做错了什么?任何人都可以帮我解决这个问题吗?

提前致谢。

3 个答案:

答案 0 :(得分:3)

您正在使用strpos(),它从字符串的开头看。你想要strRpos()(r =反向):

$description=substr($userresult->aboutme, 0, strrpos($userresult->aboutme, ' '));

您不想使用strpos()的偏移量,因为它可能适用于这种情况,但如果前几个字更短/更长,则不再有效。

答案 1 :(得分:0)

// split in words
$words = explode(' ', $userresult->aboutme);
// remove the last word
array_pop($words);
// combine again
echo implode(' ', $words);

这不尊重任何其他分隔符,如逗号或点。但你也没有这样做。

答案 2 :(得分:0)

像这样使用

 if (strlen($userresult->aboutme) > 15)    // value of $userresult->aboutme is 'Very cool and friendly'
  {   
   $description=substr($userresult->aboutme, 0, strrpos($userresult->aboutme, ' '));
  } 
  else 
  {
   $description=$userresult->aboutme;
   }

  echo $description;