我正在尝试将长字符串分成两个单独的部分,具体取决于不同的字数(一些字符串我希望分成2个字,也许是其他字符串4等),这样我就可以将第二个分割包裹起来标签。
例如:
<?php $string = 'A long title is not great for the world to read";<?php>
<h1><?php echo $string;?></h1>
但是,更喜欢输出:
<h1>A long title <span>is not great for the world to read</span></h1>
我几乎成功地使用了这种方法,但是当字符串中有引号或撇号时,我遇到了正则表达式抛出拟合的问题,并认为可能更容易使用str_word_count
,因为它也减少了服务器:
function get_snippet($str, $wordCount) {
$arr = preg_split(
'/(?<=\w)\b/',
$str,
$wordCount*2+1,
PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY
);
$first = implode('', array_slice($arr, 0, $wordCount));
$last = implode('', array_slice($arr, $wordCount));
return $first.'<span>'.$last.'</span>';
}
<h1>
<?php $string = get_the_title(); echo get_snippet($string, 3);?>
</h1>
此代码已从此处修改: How to select first 10 words of a sentence?
答案 0 :(得分:1)
你可以在像这样的一些角色之后去第一个空间...
<?php
$string = "A long title is not great for the world to read.";
$splitPosition = strpos($string, " ", 10);
print "<h1>" . substr($string, 0, $splitPosition) . "<span>" . substr($string, $splitPosition) . "</span></h1>";
?>
答案 1 :(得分:0)
答案 2 :(得分:0)
$string = "A long title is not great for the world to read";
echo "<h1>".mb_substr($string,0,13);."<span>".mb_substr($string,13,strlen($string))."</span></h1>";