php文字截取
A. php字元串截取
請看下面的示例!
php
//構造字元串
$str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
echo"原字元串:".$str."
";
//按各種方式進行截取
$str1=substr($str,5);
echo"從第5個字元開始取至最後:".$str1."
";
$str2=substr($str,9,4);
echo"從第9個字元開始取4個字元:".$str2."
";
$str3=substr($str,-5);
echo"取倒數5個字元:".$str3."
";
$str4=substr($str,-8,4);
echo"從倒數第8個字元開始向後取4個字元:".$str4."
";
$str5=substr($str,-8,-2);
echo"從倒數第8個字元開始取到倒數第2個字元為止:".$str5."
";
?>
B. php的字元串截取問題
你是要獲取【和】之間的內容,不管是什麼都沒關系,只要不是這兩個符號,對吧,這可以使用正則表達式,也可以使用substr和strpos來實現,下面是正則表達式的例子:
<?php
$s='<div
class="container"><div
id="container"><p>
【此中為要被截取的部分】</p></div>';
if
(preg_match('#【(.*?)】#s',$s,$reg))
echo
$reg[1];
?>
補充:
我覺得你是不是要獲取<p>和</p>之間的內容呀,也不說清楚,那就應該是下面的代碼:
<?php
$s='<div
class="container"><div
id="container"><p>
【此中為要被截取的部分】</p></div>';
if
(preg_match('#<div
id="container"><p>(.*?)</p></div>#s',$s,$reg))
echo
$reg[1];
?>
C. php截取字元
$str='123:123123';
$arr=explode(':',$str);
echo $arr[0]."<br>";
echo $arr[1]."<br>";
explode是把一個字元串分割成一個數組
php手冊:
array explode ( string separator, string string [, int limit] )
此函數返回由字元串組成的數組,每個元素都是 string 的一個子串,它們被字元串 separator 作為邊界點分割出來。如果設置了 limit 參數,則返回的數組包含最多 limit 個元素,而最後那個元素將包含 string 的剩餘部分。
如果 separator 為空字元串(""),explode() 將返回 FALSE。如果 separator 所包含的值在 string 中找不到,那麼 explode() 將返回包含 string 單個元素的數組。
如果 limit 參數是負數,則返回除了最後的 limit 個元素外的所有元素。此特性是 PHP 5.1.0 中新增的。
D. php字元截取
當漢字被截斷時,根據編碼規則他總是要把後邊的其他字元拉過來一起作為漢字解釋,這就是出現亂碼的原因。而值為0x81到0xff與0x00組合始終都顯示為「空」
根據這一特點,在substr的結果後面補上一個chr(0),就可以防止出現亂碼了
先看段代碼
復制代碼
代碼如下:
<?php
$len
=
15;
$str
=
"這個新聞或是文章的標題很長,需要只顯示前面一些字,後面用...來代替";
echo
strlen($str)<=$len
?
$str
:
(substr($str,0,$len).chr(0)."...");
?>
chr(0)相關知識:
null是什麼都沒有,而chr(0)的值是0。表示成16進制是0x00,表示成二進制是00000000
雖然chr(0)不會顯示出什麼,但是他是一個字元。
E. 如何利用PHP來截取一段中文字元串而不出現亂碼
/*
功能:截取全形和半形混合的字元串以避免亂碼
參數:
$str_cut 需要截斷的字元串
$length允許字元串顯示的最大長度
*/
functionsubstr_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截斷字元後查找到一段代碼。
F. PHP如何截取指定兩個字元串之間的文字
$str='<h1 style="margin:0px">USB PC Joystick Game Controller</h1>';
preg_match_all('/<h1[^>]*>(.*)<\/h1>/',$str,$match);
print_r($match[1][0]);
G. 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();
H. php截取字元串
這個問題我回答了好幾個了:
/* 截取一定長度的完整的中文字元 */
function cnsubstr($str,$strlen=10) {
if(empty($str)||!is_numeric($strlen)){
return false;
}
if(strlen($str)<=$strlen){
return $str;
}
//得到第$length個字元 並判斷是否為非中文 若為非中文
//直接返回$length長的字元串
$last_word_needed=substr($str,$strlen-1,1);
if(!ord($last_word_needed)>128){
$needed_sub_sentence=substr($str,0,$strlen);
return $needed_sub_sentence;
}else{
for($i=0;$i<$strlen;$i++){
if(ord($str[$i])>128){
$i++;
}
}//end of for
$needed_sub_sentence=substr($str,0,$i);
return $needed_sub_sentence;
}
}
直接調用這個函數就可以了。
I. php怎麼截取指定字元串之間的字元串
在php中只要判斷字元串1與字元串2之前的一個stripos位置然後再使用substr開始截取就可以了,這里給大家介紹一個簡單的方法,
你可以多去後盾人平台看教學視頻,這樣才會更加清晰易懂,因為文字比較難敘述。
J. php要截取一段漢語文字,怎樣才能保證不把漢字拆開
還得看你的編碼是gbk的還是UTF8的。
以下是UTF-8的編碼下的截取
function smarty_modifier_truncate_utf8($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;
}
以下是GBK編碼下的截取(常用)
function gbk_strlen($string)
{
if(extension_loaded('mbstring'))
{
mb_internal_encoding('GBK');
return mb_strlen($string);
}
else
{
preg_match_all('/[\x81-\xfe]?./', $string, $match);
return count($match[0]);
}
}
function gbk_substr($string, $start, $length = null)
{
if(extension_loaded('mbstring'))
{
mb_internal_encoding('GBK');
if(is_null($length))
{
return mb_substr($string, $start);
}
else
{
return mb_substr($string, $start, $length);
}
}
else
{
preg_match_all('/[\x81-\xfe]?./', $string, $match);
if(is_null($length))
{
return implode('', array_slice($match[0], $start));
}
else
{
return implode('', array_slice($match[0], $start, $length));
}
}
}
function smarty_modifier_truncate_gbk($string, $length = 80, $etc = '...',
$break_words = false, $middle = false)
{
if ($length == 0)
return '';
if (gbk_strlen($string) > $length) {
$length -= gbk_strlen($etc);
if (!$break_words && !$middle) {
$string = preg_replace('/\s+?(\S+)?$/', '', gbk_substr($string, 0, $length+1));
}
if(!$middle) {
return gbk_substr($string, 0, $length).$etc;
} else {
return gbk_substr($string, 0, $length/2) . $etc . gbk_substr($string, -$length/2);
}
} else {
return $string;
}
}