php文字截取無亂碼,php中文截取無亂碼函數

本文目錄一覽:

[php]如何在PHP中截取中文字串無亂碼

一年前寫的一個函數。用法與substr一樣,支持中文。您也可以加以改進。

//截取字符串含數,對系統函數的改進,不會將中文變亂。

function mysubstr ($str,$start,$len=0,$cutchar=”…”) {

$str=str_replace(” “,’ ‘,$str);

$str=str_replace(“「”,’「’,$str);

$str=str_replace(“」”,’」’,$str);

$str=str_replace(“—”,’—’,$str);

$str=str_replace(“””,'”‘,$str);

$str=str_replace(”’,”‘”,$str);

$str=str_replace(“”,”,$str);

$str=str_replace(“”,”,$str);

$str=str_replace(“”,”,$str);

$str=preg_replace(“/[\s]+/”,” “,$str);

$tolen=strlen($str);

if(!($start==0 $len=$tolen)){

//為方便操作,先將起始值和長度值轉換為正數

if($start0)$start=$tolen+$start;if($start0)$start=0;if($start$tolen)return “”;

if($len=0)$len=($tolen+$len)-$start;if($len1)return “”;

if($len$tolen)$len=$tolen;

for($i=0;$i$start;$i++){

if(ord(substr($str,$i,1))127){$i++;}

}

$start=$i; //起始位置計算完成

for($k=0;$k$len;$k++,$i++){

if(ord(substr($str,$i,1))127){$i++;$k++;}

}

$len=$k; //長度計算完成

$str=substr($str,$start,$len);

if($start0){$str=$cutchar.$str;}

if($start+$len$tolen){$str.=$cutchar;}

}

$str=str_replace(“”,”,$str);

$str=str_replace(‘”‘,'”‘,$str);

$str=str_replace(“‘”,”’,$str);

$str=str_replace(“”,”,$str);

$str=str_replace(“”,”,$str);

return $str;

}

如何利用PHP來截取一段中文字符串而不出現亂碼

/*

功能:截取全角和半角混合的字符串以避免亂碼

參數:

$str_cut 需要截斷的字符串

$length  允許字符串顯示的最大長度

*/

function substr_cut($str_cut,$length = 30){ 

if (strlen($str_cut) ; $length){

  for($i=0; $i  $length; $i++)

   if (ord($str_cut[$i]) ; 128) $i++;

  $str_cut = substr($str_cut,0,$i) . “…”;

}

return $str_cut;

}

說明: 

程序的關鍵語句是: 

for($i=0; $i  $length; $i++)

if (ord($str_cut[$i]) ; 128) $i++;

$str_cut = substr($str_cut,0,$i) . “…”;

如果字符的ASCII碼大於128,說明當前字符和下一個字符是屬於一個漢字的。 

則,$i++ 跳過對下一個字符的判斷。 

再結合循環中的 $i++ ,實際上,當遇到一個漢字時,$i 就會加 2 ,從而正確的跳過漢字。 

最終實現的效果是,$i 變量指向的要麼是半角的字符,要麼是全角漢字的首字符,不會指向 

全角漢字的第二個字符,所以,當$i ;= $length 時,循環結束,使用 

$str_cut = substr($str_cut,0,$i) . “…”; 截取字符時自然也就不會出現亂碼了。 

本人在寫一個程序時需要利用PHP從一段字符串中截取指定長度的一段字符下來。以前在寫ASP的時候,參考動網的程序寫過類似的程序,不過,還沒用PHP寫過。 

想偷懶,看有不有現成的代碼可以用。於是,在GOOGLE中輸入:PHP 截斷字符 後查找到一段代碼。

php截取中文字符串

PHP中文

亂碼

的原因及解決方法

原因:1.PHP頁面語言本身的編碼類型不合適,這時候,你直接在腳本中寫的中文肯定是亂碼,不用說數據庫了;

解決方法:選擇’

UTF8

‘或者’gb2312’,這樣客戶瀏覽器會自動選擇並出現正確的中文顯示。注意:’UTF8’或者’gb2312’都可以正確顯示中文的。

2.數據庫MySQL中的編碼類型不正確。

解決方法:創建數據庫的時候,MySQL

字符集

選擇’UTF8’,MySQL

連接校對選擇utf8_general_ci,這樣創建的數據庫用來存儲中文肯定沒有問題,

否則,你的中文首先在MySQL中就是亂碼,更不要期望它會給你在PHP頁面中顯示正確。

3.與平時的腳本編輯環境有關。比如,有些內容是自己用word寫的,有些是用記事本寫的,有些用editplus、ultraplus等

文本編輯器

。有時候就直接在DW中寫中文了,

這樣做不出亂碼才怪呢。

解決方法:盡量用同一種編輯器。如果是拷貝來得既有的內容,建議用ultraplus中的編碼轉換功能把它轉換成utf8或者gb2312。

到底轉換成什麼類型並不重要,關鍵要求你的PHP

WEB應用程序

中的編碼要一致就行。

4.編程訪問

MySQL時,建議添加一行代碼:mysql_query(“SET

NAMES

‘GBK'”);

這是解決方法

我沒看

懂你

貼上來的程序

所以給你一些方法去解決亂碼的問題

希望可以幫得上

php smarty里怎麼截取中文字符串不亂碼

1、如果你用過smarty模板引擎、MVC類似框架如tp,那麼你自己寫一個框架噢!

2、你要對php的繼承實現以及其中的小知識點熟知;

3、先列出你的框架目錄,什麼地方放什麼,然後寫你的配置文件

4、用到的高頻函數有:require 、 require_once 、 file_exites等!

如:sybase_connect連上數據庫。

語法: int sybase_connect(string [servername], string [username], string [password]);

返回值: 整數函數種類: 數據庫功能 本函數用來打開與 Sybase 數據庫的連接。

參數 servername 為欲連上的數據庫服務器名稱。

參數 username 及 password 可省略,分別為連接使用的帳號及密碼。

使用本函數需注意早點關閉數據庫,以減少系統的負擔。

連接成功則返回數據庫的連接代號,失敗返回 false 值。

php 怎麼截取漢字字符串?

?php 

$str = ‘這樣一來我的字符串就不會有亂碼^_^’; 

echo “mb_substr:” . mb_substr($str, 0, 7, ‘utf-8’); 

//結果:這樣一來我的字 

echo “

“; 

echo “mb_strcut:” . mb_strcut($str, 0, 6, ‘utf-8’); 

//結果:這樣 

?

首先

1.確保你的Windows/system32下有php_mbstring.dll這個文件,沒有就從你Php安裝目錄extensions里拷入Windows/system32裏面。

2.在windows目錄下找到php.ini打開編輯,搜索mbstring.dll,找到

;extension=php_mbstring.dll把前面的;號去掉,這樣mb_substr函數就可以生效了

mb_strcut函數功能也可以截取字符串長度,下面實例具體看看區別在哪:

mb_substr();

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/301266.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-30 16:08
下一篇 2024-12-30 16:08

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字符串操作中,capitalize函數常常被用到,這個函數可以使字符串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • Python飛機大戰中文字資源分析

    Python飛機大戰是一款經典的飛行射擊遊戲,在遊戲過程中,玩家需要控制一架飛機不斷消滅敵人,生存到最後。該遊戲使用Python語言編寫,其中涉及到的文字資源對遊戲的整體體驗有重要…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • 單片機打印函數

    單片機打印是指通過串口或並口將一些數據打印到終端設備上。在單片機應用中,打印非常重要。正確的打印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的打印數據可以幫助我們快速…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python zipfile解壓文件亂碼處理

    本文主要介紹如何在Python中使用zipfile進行文件解壓的處理,同時詳細討論在解壓文件時可能出現的亂碼問題的各種解決辦法。 一、zipfile解壓文件亂碼問題的根本原因 在P…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29

發表回復

登錄後才能評論