国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP GD庫(kù) 生成圖片時(shí),對(duì)于英文的換行

alaege / 1320人閱讀

摘要:前言最近開發(fā)遇到后端生成圖片時(shí)英文的換行貼代碼字符串相關(guān)處理英文字符串換行如果是字母,并且到了換行的地方,則需要看這個(gè)字符的下一個(gè)字符是否是字母,如果是的話就需要回到上一個(gè)不是字母的地方注意中文和英文上一次出現(xiàn)不是字母的索引位置將單個(gè)字符存

前言
最近開發(fā)遇到后端生成圖片時(shí)英文的換行

貼代碼

/*
 * 字符串相關(guān)處理
 */
class StringUtils
{
    /**
     * 英文字符串換行
     * 如果是字母,并且到了換行的地方,則需要看這個(gè)字符的下一個(gè)字符是否是字母,如果是的話就需要回到上一個(gè)不是字母的地方
     * 注意:中文和英文
     */
    public static function wrap($str, $max_len) {
        $arr = [];
        $len = mb_strlen($str);
        if ($len == 0) {
            return $arr;
        }
        if ($len <= $max_len) {
            $arr[] = $str;
            return $arr;
        }
        $w_len = 0;
        $w_str = "";
        $last_index = 0; // 上一次出現(xiàn)不是字母的索引位置
        for ($i = 0; $i < $len; $i++) {
            $sub_str = mb_substr($str, $i, 1); //將單個(gè)字符存到數(shù)組當(dāng)中
            $w_str .= $sub_str;
            $w_len++;
            if (!self::isWord($sub_str)) {
                // 記錄最后一次出現(xiàn)不是字母的索引
                $last_index = $w_len;
            }
            // 需要換行
            if ($w_len >= $max_len) {
                if (self::isWord($sub_str)) {
                    $w_str_1 = mb_substr($w_str, 0, $last_index);
                    $w_str_2 = mb_substr($w_str, $last_index, $w_len);
                    $w_len = $w_len - $last_index;
                } else {
                    $w_str_1 = $w_str;
                    $w_str_2 = "";
                    $w_len = 0;
                }
                $arr[] = $w_str_1;
                $w_str = $w_str_2;
                $last_index = 0;
            }
        }
        $arr[] = $w_str;

        return $arr;

    }

    /**
     * 中文換行
     */
    public static function wrapCh($str, $max_len) {
        $arr = [];
        $len = mb_strlen($str);
        if ($len == 0) {
            return $arr;
        }
        if ($len <= $max_len) {
            $arr[] = $str;
            return $arr;
        }
        $page = ceil($len / $max_len);
        for ($i = 0; $i < $page; $i++) {
            $temp_str = mb_substr($str, $i * $max_len, $max_len);
            $arr[] = $temp_str;
        }
        return $arr;
    }

    /**
     * 判斷是否單詞
     */
    public static function isWord($chr) {
        $wordArr = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
        return in_array($chr, $wordArr);
    }

}
執(zhí)行效果
    // 字符串
    $str = "呵呵呵發(fā)鏈接The British Charles Babbage was the inventor of an analytical machine with附加費(fèi)兩款手機(jī) punch發(fā)vvvvv個(gè)版本發(fā)vv cards, and of a difference engine, both forerunners of the computer, and his name is given to the mwei or picoether, 10 to the -12 ether.";
    $arr = StringUtils::wrapCh($str , 20);
    echo "
暴力換行

"; foreach($arr as $k=>$v){ echo $v . "
"; } $arr = StringUtils::wrap($str , 20); echo "
正確的換行

"; foreach($arr as $k=>$v){ echo $v . "
"; }
打印結(jié)果
暴力換行

呵呵呵發(fā)鏈接The British Ch
arles Babbage was th
e inventor of an ana
lytical machine with
附加費(fèi)兩款手機(jī) punch發(fā)vvvvv個(gè)
版本發(fā)vv cards, and of 
a difference engine,
both forerunners of
the computer, and h
is name is given to 
the mwei or picoethe
r, 10 to the -12 eth
er.

正確的換行

呵呵呵發(fā)鏈接The British 
Charles Babbage was 
the inventor of an 
analytical machine 
with附加費(fèi)兩款手機(jī) punch發(fā)
vvvvv個(gè)版本發(fā)vv cards, 
and of a difference 
engine, both 
forerunners of the 
computer, and his 
name is given to 
the mwei or 
picoether, 10 to 
the -12 ether.

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/31468.html

相關(guān)文章

  • 文字處理之二:換行及word-break和word-wrap屬性

    摘要:英文換行來(lái)到英文,情況就要復(fù)雜一些。在英文中有單詞的概念,所以在換行時(shí)就得考慮單詞的完整性。上面介紹的值,主要也是針對(duì)英文的,漢字還是按照瀏覽器的默認(rèn)行為,裝不下就換行。最后顯示時(shí),英文還是按照默認(rèn)行為,中文變成了不換行。 上一篇博客中介紹white-space屬性時(shí)聊到了換行,這一篇介紹換行的細(xì)節(jié)。 瀏覽器的默認(rèn)行為 瀏覽器的換行行為,對(duì)于中文和英文存在一些差別。 中文換行 正如上一...

    wangxinarhat 評(píng)論0 收藏0
  • 【轉(zhuǎn)】css樣式自動(dòng)換行(強(qiáng)制換行

    摘要:原文鏈接自動(dòng)換行問(wèn)題正常字符的換行是比較合理的而連續(xù)的數(shù)字和英文字符常常將容器撐大挺讓人頭疼下面介紹的是如何實(shí)現(xiàn)換行的方法對(duì)于等塊級(jí)元素正常文字的換行亞洲文字和非亞洲文字元素?fù)碛心J(rèn)的當(dāng)定義的寬度之后自動(dòng)換行正常文字的換行亞洲文字和非亞洲 原文鏈接:http://blog.csdn.net/ye987987... 自動(dòng)換行問(wèn)題,正常字符的換行是比較合理的,而連續(xù)的數(shù)字和英文字符常常將容...

    ASCH 評(píng)論0 收藏0
  • 【轉(zhuǎn)】css樣式自動(dòng)換行(強(qiáng)制換行

    摘要:原文鏈接自動(dòng)換行問(wèn)題正常字符的換行是比較合理的而連續(xù)的數(shù)字和英文字符常常將容器撐大挺讓人頭疼下面介紹的是如何實(shí)現(xiàn)換行的方法對(duì)于等塊級(jí)元素正常文字的換行亞洲文字和非亞洲文字元素?fù)碛心J(rèn)的當(dāng)定義的寬度之后自動(dòng)換行正常文字的換行亞洲文字和非亞洲 原文鏈接:http://blog.csdn.net/ye987987... 自動(dòng)換行問(wèn)題,正常字符的換行是比較合理的,而連續(xù)的數(shù)字和英文字符常常將容...

    時(shí)飛 評(píng)論0 收藏0
  • PHPWord中文手冊(cè)整理

    摘要:修正中文支持的問(wèn)題,使用前如果發(fā)現(xiàn)亂碼,需要進(jìn)行一些修正解決編碼問(wèn)題,會(huì)對(duì)輸入的文字進(jìn)行編碼轉(zhuǎn)化,如果你使用或者編碼的話就會(huì)出現(xiàn)亂碼,如果你用編碼,就查找類庫(kù)中所有方法中的轉(zhuǎn)碼將其刪除,如果你采用或者編碼,使用進(jìn)行編碼轉(zhuǎn)換。 修正 中文支持的問(wèn)題,使用前如果發(fā)現(xiàn)亂碼,需要進(jìn)行一些修正: 解決編碼問(wèn)題,PHPword?會(huì)對(duì)輸入的文字進(jìn)行utf8_encode編碼轉(zhuǎn)化,如果你使用GBK、...

    wangdai 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<