首頁 php教程 php手册 混合编码的文本段落重排

混合编码的文本段落重排

Jun 06, 2016 pm 07:34 PM
http 文字 段落 編碼 重排

http://www.sgcha.cn/cha.php 在文本处理中,尤其是大段的文本处理,由于html语言的规则以及文本编码的不同,使得文字容易出现乱码。同时由于换行的不同,使得文本要经常进行段落重排。 段落重排的标识主要是根据特定的标点符号来进行。具体参考代码中的注释

http://www.sgcha.cn/cha.php
在文本处理中,尤其是大段的文本处理,由于html语言的规则以及文本编码的不同,使得文字容易出现乱码。同时由于换行的不同,使得文本要经常进行段落重排。
段落重排的标识主要是根据特定的标点符号来进行。具体参考代码中的注释
$strtest = '这个是第一个
句子,
的第一部分。
的反对法 的飞洒?
\u3434,
';
$strtest =cut_str_by_mb ($strtest );

echo "<pre class="brush:php;toolbar:false">";
echo $strtest;
/*********************************************************************
输入一个字串
此处的关键是段落的标点,是一个utf-8的编码  
返回排版后的字串。

*********************************************************************/
function cut_str_by_mb ($str,$arr_tag=NULL){
    if($arr_tag==NULL){
		$arr_tag=array(
					'\u2026',
					'\u201d',
				  	'\u302',
					'\uff1f',
				  	':',
					'\uff1a',
				  );
	}
	$str=set_char_set($str);//不管先检查字符格式,转化成utf-8的再说
	$str=unescape($str);//把里面16进制编码的转化成utf-8的格式
	$tmp_array=preg_split("/((\r(?!\n))|((?<!\r)\n)|(\r\n))/", $str);//根据换行符拆分成数组
	$tmp_val='';
	foreach($tmp_array as  $v){
		if(!empty($tmp_val)){
			$v=trim($v);//去掉字符的首尾空格
		}
		$tmp_val=$tmp_val.$v;//链接后面的值,组成新的字串
		$len=mb_strlen( $tmp_val, 'utf-8') ;
		$endtag=mb_substr($tmp_val,$len-1,1,'utf-8');
		$u_tag=unicode_encode($endtag);
		if (in_array($u_tag, $arr_tag)) {
			$return_arr[]=$tmp_val;
			$tmp_val='';
		}
	} 
	$return_str=implode("\r\n",$return_arr);
    return $return_str;
}

/****************************************************************
	检查编码,统一用utf-8
**********************************************************************/
	function set_char_set($data){
	  if( !empty($data) ){
		$fileType = mb_detect_encoding($data , array('UTF-8','GBK','LATIN1','BIG5')) ;
		if( $fileType != 'UTF-8'){
		  $data = mb_convert_encoding($data ,'utf-8' , $fileType);
		}
	  }
	  return $data;
	}
/****************************************************************
	把其中的&# 以及joson格式转化成中文
**********************************************************************/
function unescape($str) {
    $str = rawurldecode($str);
    preg_match_all("/(?:%u.{4})|&#x.{4};|&#\d+;|.+/U",$str,$r);
    $ar = $r[0];
//    print_r($ar);
    foreach($ar as $k=>$v) {
        if(substr($v,0,2) == "%u"){
            $ar[$k] = iconv("UCS-2BE","UTF-8",pack("H4",substr($v,-4)));
  }
        elseif(substr($v,0,3) == "&#x"){
            $ar[$k] = iconv("UCS-2BE","UTF-8",pack("H4",substr($v,3,-1)));
  }
        elseif(substr($v,0,2) == "&#") {
             
            $ar[$k] = iconv("UCS-2BE","UTF-8",pack("n",substr($v,2,-1)));
        }
    }
    return join("",$ar);
}	

/****************************************************************
	把utf-8编码的字符返回 unicode的字串
**********************************************************************/
function unicode_encode($name){
    $name = iconv('UTF-8', 'UCS-2', $name);
    $len = strlen($name);
    $str = '';
    for ($i = 0; $i < $len - 1; $i = $i + 2){
        $c = $name[$i];
        $c2 = $name[$i + 1];
        if (ord($c) > 0){    
			// 两个字节的文字
            $str .= '\u'.base_convert(ord($c), 10, 16).base_convert(ord($c2), 10, 16);
        }else{
            $str .= $c2;
        }
    }
    return $str;
}
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在Chrome和Edge的所有選項卡中搜尋文本 如何在Chrome和Edge的所有選項卡中搜尋文本 Feb 19, 2024 am 11:30 AM

本教學向您展示如何在Windows的Chrome或Edge中找到所有開啟的標籤頁上的特定文字或短語。有沒有辦法在Chrome中所有開啟的標籤頁上進行文字搜尋?是的,您可以使用Chrome中的免費外部Web擴充功能在所有開啟的標籤上執行文字搜索,而無需手動切換標籤。一些擴充功能如TabSearch和Ctrl-FPlus可以幫助您輕鬆實現這項功能。如何在GoogleChrome的所有選項卡中搜尋文字? Ctrl-FPlus是一個免費的擴展,它方便用戶在瀏覽器視窗的所有標籤中搜尋特定的單字、短語或文字。這個擴

html怎麼段落空兩格 html怎麼段落空兩格 Mar 27, 2024 pm 04:39 PM

html段落空兩格的方法:1、使用CSS的text-indent屬性;2、使用CSS的padding-left屬性;3、使用非斷行空格或全角空格;4、使用“pre”標籤或white-space屬性。

瞭解網頁重定向的常見應用場景並了解HTTP301狀態碼 瞭解網頁重定向的常見應用場景並了解HTTP301狀態碼 Feb 18, 2024 pm 08:41 PM

掌握HTTP301狀態碼的意思:網頁重定向的常見應用場景隨著網路的快速發展,人們對網頁互動的要求也越來越高。在網頁設計領域,網頁重定向是一種常見且重要的技術,透過HTTP301狀態碼來實現。本文將探討HTTP301狀態碼的意義以及在網頁重新導向中的常見應用場景。 HTTP301狀態碼是指永久重新導向(PermanentRedirect)。當伺服器接收到客戶端發

知識圖譜:大模型的理想搭檔 知識圖譜:大模型的理想搭檔 Jan 29, 2024 am 09:21 AM

大型語言模式(LLM)具有產生流暢和連貫文字的能力,為人工智慧的對話、創意寫作等領域帶來了新的前景。然而,LLM也存在一些關鍵限制。首先,它們的知識僅限於從訓​​練資料中辨識出的模式,缺乏對世界的真正理解。其次,推理能力有限,不能進行邏輯推理或從多個資料來源融合事實。面對更複雜、更開放的問題時,LLM的回答可能變得荒謬或矛盾,被稱為「幻覺」。因此,儘管LLM在某些方面非常有用,但在處理複雜問題和真實世界情境時,仍存在一定的限制。為了彌補這些差距,近年來出現了檢索增強生成(RAG)系統,其核心思想是

http請求415錯誤解決方法 http請求415錯誤解決方法 Nov 14, 2023 am 10:49 AM

解決方法:1、檢查請求頭中的Content-Type;2、檢查請求體中的資料格式;3、使用適當的編碼格式;4、使用適當的請求方法;5、檢查伺服器端的支援。

HTTP 200 OK:了解成功回應的意義與用途 HTTP 200 OK:了解成功回應的意義與用途 Dec 26, 2023 am 10:25 AM

HTTP狀態碼200:探索成功回應的意義與用途HTTP狀態碼是用來表示伺服器回應狀態的數字代碼。其中,狀態碼200表示請求已成功被伺服器處理。本文將探討HTTP狀態碼200的具體意義與用途。首先,讓我們來了解HTTP狀態碼的分類。狀態碼分為五個類別,分別是1xx、2xx、3xx、4xx和5xx。其中,2xx表示成功的回應。而200是2xx中最常見的狀態碼

學習如何開啟win11文本文檔 學習如何開啟win11文本文檔 Jan 02, 2024 pm 03:54 PM

文字文檔是系統中非常重要的文件,它不僅可以讓我們查看許多文字內容,還可以提供程式設計功能。但是在win11系統更新後,很多朋友發現文字文檔打不開了,這時候我們可以透過運行的方式直接打開,下面一起來看看吧。 win11文字文檔在哪裡開啟1、先按下鍵盤上的「win+r」調出運作。 2、然後在其中輸入「notepad」就可以直接新建文字文檔了。 3.如果我們想要開啟現有的文字文檔,還可以點選左上角的文件,然後點選「開啟」即可。

對於HTTP請求逾時會回傳哪種狀態碼? 對於HTTP請求逾時會回傳哪種狀態碼? Feb 18, 2024 pm 01:58 PM

HTTP請求逾時,伺服器端常常會回傳504GatewayTimeout狀態碼。此狀態碼表示伺服器在執行某個請求時,經過一段時間後仍未能取得到請求所需的資源或完成請求的處理。它是5xx系列的狀態碼,表示伺服器端遇到了臨時的問題或過載,導致無法正確處理客戶端的請求。在HTTP協定中,各種狀態碼都有特定的意義和用途,而504狀態碼則用來表示請求逾時問題。在客戶

See all articles