我尝试过但我很难过。假设我有以下情况:
$string = "Jenny's garden is one of the best in town, it has lush greens and colorful flowers. With what happened to her recently, she could use a new sprinkler system so that she does not have to over exert herself. Perhaps Joel can sell that extra bike to raise money or perhaps put up a garage sale.";
$keyword = "recently";
$length = 136;
// when keyword keyword is empty
$result = "Jenny's garden is one of the best in town, it has lush greens and colorful flowers. With what happened to her recently, she could use a (snip)";
// when keyword is NOT empty
$result = "(snip)it has lush greens and colorful flowers. With what happened to her recently, she could use a new sprinkler system so that she does not h(snip)";
我要做的是获取一个字符串的摘录,如$ result所示,可能以第一次出现的关键字为中心(如果存在)。我很困惑如何使用substr和strpos在php中实现这一点。帮助
答案 0 :(得分:1)
这应该适合您的需要:
if ($keyword != "") {
$strpos = strpos($string, $keyword);
$strStart = substr($string, $strpos - ($length / 2), $length / 2);
$strEnd = substr($string, $strpos + strlen($keyword), $length / 2);
$result = $strStart . $keyword . $strEnd;
}
else {
$result = substr($string, 0, $length);
}
以下是我使用的测试代码:
<?PHP
$string = "Jenny's garden is one of the best in town, it has lush greens and colorful flowers. With what happened to her recently, she could use a new sprinkler system so that she does not have to over exert herself. Perhaps Joel can sell that extra bike to raise money or perhaps put up a garage sale.";
$keyword = "recently";
$length = 136;
if ($keyword != "") {
$strpos = strpos($string, $keyword);
$strStart = substr($string, $strpos - ($length / 2), $length / 2);
$strEnd = substr($string, $strpos + strlen($keyword), $length / 2);
$result = $strStart . $keyword . $strEnd;
}
else {
$result = substr($string, 0, $length);
}
echo $result;
?>
这是与之相呼应的结果:
它有郁郁葱葱的绿色和五颜六色的鲜花。根据她最近发生的事情,她可以使用新的喷水灭火系统,这样她就不必
编辑:修复了我的代码中的几个错误......
注意:这将显示$ 136结果,即136个字符+关键字的长度。如果您希望它只有136,请添加$length = 136 - strlen($keyword);