2011-11-03 63 views
0

我需要削减字符串大约160个字符,但我想通过最接近的空格字符来切断。通过使用UTF-8字体(mb_函数),任务变得更糟。我的代码如下:php找到最接近空格的字符后mb_substr()

<?php 
function mb_strrev($str, $encoding='UTF-8'){ 

    return mb_convert_encoding(strrev(mb_convert_encoding($str, 'UTF-16BE', $encoding)), 

$encoding, 'UTF-16LE'); 
} 

$in = mb_strpos(mb_strrev(trim(mb_substr($mysring, 0, 165))), ' '); 

$new = mb_substr(mb_strrev(trim(mb_substr($mysring, 0, 165))), $in, 165); 

mb_strrev($new); 
?> 

有谁知道更优雅的方式?

+1

UTF-8是不是一种字体,这是一个*编码*。 – deceze

+0

@deceze,实际上,我使用utf8编码的字体 – drdarwin

+0

不,您正在处理以UTF-8编码的* strings *。 :-P – deceze

回答

1

我会做这样的事情:

<?php 
function approx_len($str,$len) { 
$x = explode(" ",$str); 
$y = count($x); 
$newlen = ''; 
for ($i = 0; $i < $y; $i++) { 
$this_x = $x[$i]. ' '; 
if (strlen($newlen.$this_x) > $len) $i = $y; 
else $newlen = $newlen.$this_x; 
} 
return $newlen; 
} 
$x = approx_len("aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa aaaaa",160); 
echo $x; 
echo '<br />'; 
echo strlen($x); 
//returns 156 
?> 
2

找到this,也许它更适合你。

+0

经过一些修改,你给的URL的功能比我使用的解决方案更加优雅。谢谢! – AVProgrammer