首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP substr 函數字符串截取完全指南

     編輯:PHP 相關知識

函數原型

string substr(string $string, int $start [, int $length ])

參數詳解

參數說明
string必需,目標字符串
start必需,開始位置。
≥0:從左側第 start 個字符(0 為首字符)
<0:從右側第 |start| 個字符開始
length可選,截取長度。
≥0:從 start 向右截取 length 個字符
<0:從字符串末尾向左截取,保留前 length 個字符
省略:截取到字符串結尾

代碼示例與輸出

<?php
$str = "Welcome to www.jb51.net!";

echo substr($str, 0) . "<br>";
// 輸出:Welcome to www.jb51.net! (從 0 開始到結尾)

echo substr($str, 4, 14) . "<br>";
// 輸出:ome to www.jb5 (索引 4 開始,長度 14)

echo substr($str, -4, 4) . "<br>";
// 輸出:net! (倒數第 4 個字符開始,長度 4)

echo substr($str, 0, -4) . "<br>";
// 輸出:Welcome to www.jb51. (從開頭截取到倒數第 4 個字符之前)
?>

中文截取亂碼問題與解決

原因:substr 按**字節**截取,UTF-8 中文字符佔 3 字節,截斷導致亂碼。

解決方案:

  1. mb_substr (推薦):多字節安全截取 mb_substr($str, 0, 10, 'UTF-8')
  2. 正則匹配:preg_match('/^.{10}/u', $str, $m); echo $m[0];
  3. 字符串轉數組:join('', array_slice(preg_split('//u', $str), 0, 10))

常見應用場景

  • 生成摘要:mb_substr($content, 0, 200) . '...'
  • 提取文件擴展名:substr($filename, strrpos($filename, '.') + 1)
  • 掩碼敏感信息:substr_replace($phone, '****', 3, 4) (配合 substr_replace)
  • 解析固定格式字符串:如身份證號、銀行卡號分段。

性能提示

  • 純 ASCII 字符串 substr 極快(C 層實現)。
  • 頻繁操作長字符串考慮引用傳遞或預先分割。
  • PHP 7+ 對字符串操作有顯著優化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved