我想知道是否有标记第n个字符的好方法。目前我有这个代码,但它有一些缺陷。
$string ='Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ac arcu sit amet lorem mollis dignissim ac ut metus. Aliquam sed nulla ut risus sollicitudin luctus vitae eget quam. Nam velit diam, ullamcorper id tempus ac, iaculis sed arcu. Sed sed lectus rhoncus leo vehicula accumsan consequat a risus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin posuere, diam scelerisque suscipit accumsan, enim tortor lobortis sapien, a faucibus sapien metus eu erat. Phasellus condimentum elit ac nisi fringilla imperdiet. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris ac lectus quis lorem ornare ornare non vel nunc. Fusce et odio at leo interdum cursus eget sed magna. Nam convallis vehicula fermentum. Etiam turpis mauris, convallis et sollicitudin quis, rutrum in sapien. Suspendisse purus eros, sagittis vitae venenatis tincidunt, imperdiet molestie sem. Vestibulum eleifend urna vitae tortor suscipit consequat. Praesent placerat magna a ligula fringilla dapibus. Ut volutpat purus eu felis elementum eu laoreet nulla eleifend.';
echo mark_nth_char($string, 100);
function mark_nth_char($string, $pos, $prefixlen=10, $suffixlen=10, $fixchar='...') {
$output = $fixchar;
for ($i = $pos - $prefixlen ; $i < $pos + $suffixlen; $i++ ) {
if ($i == $pos)
$output .= '<b><font color="red">' . $string[$i] . '</font></b>';
else
$output .= $string[$i];
}
return $output . $fixchar;
}
问题:
- 如果传递的数字小于 $prefixlen`,则会导致错误。
- 如果传递的数字超过总字符串长度,则会导致错误。
- 如果总字符串长度小于 和 的总和
$prefixlen
,$suffixlen
则不应添加它们。
我想在匹配字符(具有指定位置的字符)周围包含字符串。可能还有其他我不知道的问题,但不是解决这些问题,我想知道是否有更好的方法,可以以更有效和优雅的方式完成。
感谢你的信息。