2011-11-03 25 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