本文目錄一覽:
- 1、如何在php中截取字符串“xxx
- 2、php 怎麼截取漢字字符串?
- 3、如何利用PHP來截取一段中文字符串而不出現亂碼
- 4、php 截取utf-8格式的字符串實例代碼
- 5、PHP指定截取字符串中的中英文或數字字符的實例分享
- 6、php截取中文字符串
如何在php中截取字符串“xxx
substr(string,start,length)
string表示要截取的對象,start表示從哪個位置開始截取,0表示從頭開始,正數表示從這個數的位置後面截取,負數表示從結尾算開始截取的位置,但依然是從左到右截,length表示截取長度.負數表示排除或忽略結尾多少個字符
中文截取
mb_substr( $str, $start, $length, $encoding )
$str,需要截斷的字符串
$start,截斷開始處,起始處為0
$length,要截取的字數
$encoding,網頁編碼,如utf-8,一個漢字是3個字節
php 怎麼截取漢字字符串?
?php
$str = ‘這樣一來我的字符串就不會有亂碼^_^’;
echo “mb_substr:” . mb_substr($str, 0, 7, ‘utf-8’);
//結果:這樣一來我的字
echo “br”;
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();
如何利用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 截取utf-8格式的字符串實例代碼
php
截取utf-8格式的字符串
php中,我們經常需要截取字符串。英文字符佔用一個字節,中文字符佔用兩個字節,但中文字符佔用兩個字節是相對於GBK編碼而言但是在時下國際流行的UTF8編碼中,一個中文字符佔用3個字節。本文章向大家介紹一個php
截取utf-8格式字符串的函數。
舉例說明:
function
truncate_utf8_string($string,
$length,
$etc
=
‘…’)
{
$result
=
”;
$string
=
html_entity_decode
(
trim
(
strip_tags
(
$string
)
),
ENT_QUOTES,
‘UTF-8’
);
$strlen
=
strlen
(
$string
);
for($i
=
0;
(($i
$strlen)
($length
0));
$i
++)
{
if
($number
=
strpos
(
str_pad
(
decbin
(
ord
(
substr
(
$string,
$i,
1
)
)
),
8,
‘0’,
STR_PAD_LEFT
),
‘0’
))
{
if
($length
1.0)
{
break;
}
$result
.=
substr
(
$string,
$i,
$number
);
$length
-=
1.0;
$i
+=
$number
–
1;
}
else
{
$result
.=
substr
(
$string,
$i,
1
);
$length
-=
0.5;
}
}
$result
=
htmlspecialchars
(
$result,
ENT_QUOTES,
‘UTF-8’
);
if
($i
$strlen)
{
$result
.=
$etc;
}
return
$result;
}
如果需要截取utf-8格式的字符串,直接調用這個函數即可。
?php
$str=”如果需要截取utf-8格式的字符串,直接調用這個函數即可。”;
echo
truncate_utf8_string($str,10);//輸出結果:如果需要截取utf-8格…
?
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
PHP指定截取字符串中的中英文或數字字符的實例分享
我們在開發過程中,經常會碰到截取中文英文數字等的問題,大家知道中文所佔的字符和英文數字是不同的;然後我們就會在項目的common里寫一些日常的函數包含時間計算轉換和中英文字符截取的函數;比如截取中英文的函數沒個幾行代碼恐怕拿不下來的吧,現在就告訴大家一個簡單的(自己本地運行過的),如有問題,請大家多多指教
$c
=
‘ddaabbccaa’;
$d
=
‘地球需要我們每個人的愛護’;
$frist1
=
mb_substr(
$c,
0,
1
,”UTF-8″);
//
d
$delete_last1
=
mb_substr($d,
-1,1,”UTF-8″);
//
護
echo
$frist1.’+++’.$delete_last1.’br/’;
//
d+++護
$frist2
=
mb_substr(
$d,
0,
1
,”UTF-8″);
//
地
$delete_last2
=
mb_substr($d,
-1,1,”UTF-8″);
//
護
echo
$frist2.’+++’.$delete_last2.’br/’;
//
地+++護
$e
=
’11aa22cc33′;
$f
=
‘aa地球需要我們每個人的愛護’;
$g
=
‘地球需要我們每個人的愛護gg’;
$h
=
‘地球需要我們每個人的愛護’;
$first3
=
mb_substr(
$e,
0,
1
,”UTF-8″);
//
1
$last3
=
mb_substr(
$f,
0,
1
,”UTF-8″);
//
a
$delete_last3
=
mb_substr($f,
-1,1,”UTF-8″);
//
護
$delete_last4
=
mb_substr($g,
-1,1,”UTF-8″);
//
g
$frist4
=
mb_substr(
$g,
0,
1
,”UTF-8″);
//
地
$delete_last5
=
mb_substr($h,
-1,1,”UTF-8″);
//
護
echo
$first3.’+++’.$last3.’—‘.$delete_last3.’***’.$delete_last4.”.$frist4.’br/’;
//
1+++a—護***g地
echo
$last3.’…’.$delete_last3.’br/’;
//
a…護
echo
$frist4.’…’.$delete_last5.’br/’;
//
地…護
//
這樣不管字符串里是中英文數字等都是可以的無需判斷,如:
”地…護“
或者
“地…”
或者
“…護”
PS:過濾字符串中空格的方法
去除字符串首尾中英文空格的方法:
function
mbTrim($str)
{
return
mb_ereg_replace(‘(^( |
)+|( |
)+$)’,
”,
$str);
}
下面的正則驗證時過濾掉用戶輸入的連續空格,包括全角空格和半角空格
$user
=
mb_ereg_replace(‘^( |
)+’,
”,
$user);
$user
=
mb_ereg_replace(‘( |
)+$’,
”,
$user);
$age
=
mb_ereg_replace(‘^( |
)+’,
”,
$age);
$age
=
mb_ereg_replace(‘( |
)+$’,
”,
$age);
$method
=
mb_ereg_replace(‘^( |
)+’,
”,
$method);
$method
=
mb_ereg_replace(‘( |
)+$’,
”,
$method);
$address
=
mb_ereg_replace(‘^( |
)+’,
”,
$address);
$address
=
mb_ereg_replace(‘( |
)+$’,
”,
$address);
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'”);
這是解決方法
我沒看
懂你
貼上來的程序
所以給你一些方法去解決亂碼的問題
希望可以幫得上
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/297780.html