php格式化文本(換行)

    function TxtFormat($txt)
    {
        if((stripos($txt, "\n") > 0))
        {
            return $txt;
        }

        $tags = [ '!', '!', '。', '?', '?' ];
        $jishu = 0;
        $lianxu = 30;
        $insertBr = "\r\n\r\n    ";
        $isFlag = false;
        $lastchar = '';
        $tempChar = '';
        $sb = "    ";

        $txt_count = mb_strlen($txt,mb_detect_encoding($txt, array('GB2312','GBK','UTF-8')));
        for($i = 0; $i < $txt_count; $i++)
        {
            $tempChar = mb_substr($txt, $i, 1, 'utf-8');

            if ($tempChar == '\r' || $tempChar == '\n' || $tempChar == ' '
                    || $tempChar == ' ')
            {
                continue;
            }

            ++$jishu;
            if ($tempChar == '“')
            {
                $isFlag = true;
                $sb_count = mb_strlen($sb, 'UTF-8');
                if(0 < $sb_count)
                {
                    $lastchar = mb_substr($sb, $sb_count-1, 1, 'utf-8');
                }
                else
                {
                    $lastchar = '0';
                }

                if ($lastchar != '0' && (($lastchar != ' ' && $lastchar != ':' && $lastchar != ',' && $lastchar != ',') || $lastchar == '”'))
                {
                    $jishu = 0;
                    $sb .= $insertBr;
                }
                $sb .= $tempChar;
                continue;
            }

            if ($isFlag && $tempChar == '”')
            {
                $isFlag = !$isFlag;
                $sb .= $tempChar;
                continue;
            }

            $sb .= $tempChar;
            foreach ($tags as $tag)
            {
                if ($tempChar == $tag)
                {
                    if (($isFlag == false && $jishu > $lianxu) && $i + 1 < $txt_count
                            && mb_substr($txt, $i+1, 1, 'utf-8') != '”')
                    {
                        $sb .= $insertBr;

                        $jishu = 0;
                        $isFlag = false;
                        break;
                    }

                }
            }
        }
        return $sb;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章