php的字串擷取

2021-04-14 00:19:24 字數 1372 閱讀 8897

這個功能在php輸出頁面的時候很常用 ,就是把乙個字串擷取為不大於某個長度的字串。本身是很簡單的事情,但是附加了一些需求:1,字串中含有中文,也就是單位元組雙位元組混著的。2,字串中含有html**。

對於中文擷取,網上有現成的**可以拿來用,就像這樣:

function

trunk(

$str

,$most,=

"...")

return

substr_cut(

$str

,$most

-strlen())

.$apend

;}function

substr_cut(

$str_cut

,$length

)return

$str_cut

;}這裡就是簡單的判斷一下位元組是否大於128,是就往前多移一位。因為對於gb2312編碼,凡雙位元組第乙個位元組都是大於128的。

至於第二個需求,含有html**的,其實我覺得這樣的要求通過css來做更加合適了。

通過設定width,height,line-height限定其塊大小後,再設定overflow

:hidden

;就可以做到了。如果只為ie而做的話,那麼有更多的css手段來控制超出邊界後的處理。

如果一定要自己寫程式處理的話,我想最好是只處理簡單情況,如果僅為了擷取含html**的字串就要寫乙個完全的html parser的話,未免太小題大作了。這裡我寫了一段僅處理成對、非巢狀情況的:

function

trunkhtml(

$str

,$most,=

"...") 

if(strlen

($notagstr

) <=

$most

) $str_cut

=substr_cut(

$notagstr

,$most

-strlen

());

$cut_len

=strlen

($str_cut

);$istag

=false

;foreach

($arr

as$i

=>

$v)  

else}}

$istag=!

$istag

;}assert

(false

);return

$str_cut

;}這裡做法也不複雜,先用正則把它分割開來,取出不在<>中的部分拼在一起,先用前面的substr_cut擷取一次,記住最終截了多長。然後再用各個部分長度去減,減到不夠的時候就確定是截在哪個位置了。因為假定html標籤都是成對的,最後再判斷一下是否處在一對標籤中。

php 字串的擷取

php中有非常多的字串處理函式,其中就有字串擷取函式。1 英文本串的擷取函式substr 函式說明 substr 字串變數,開始擷取的位置,擷取個數 例如 str i love you 擷取love這幾個字母 echo substr str,2,4 為什麼開始位置是2呢,因為substr函式計算字串...

php 擷取 ,php怎麼擷取字串

php內建了大量的字串操作函式,比如php implode,explode等等,php擷取字串,可以用substr,mb substr二個函式。phpsubstr語法substr string,start,length 引數string 即要擷取的字串 start 即要擷取的開始位置 0表示從從前往...

PHP擷取HTML字串

擷取html字串 static function cutstr string,length,dot pre chr 1 end chr 1 string str replace array array pre.end,pre.end,pre.end,pre.end string strcut n t...