首頁 後端開發 php教程 PHP字串學習之利用正規過濾字符,回傳數字字符

PHP字串學習之利用正規過濾字符,回傳數字字符

Aug 18, 2021 pm 05:09 PM
php 字串 正規表示式

在之前的文章《PHP字串學習之怎麼去除其他字符,只留下數字》中,我們介紹了利用for迴圈和in_array()或is_numeric()函數來提取字串中數字字元的方法。這次我們繼續PHP字串的學習與練習,介紹一下提取字串中數字字元的另幾種方法。

提取字串中數字字符,本質上就是字串過濾操作。看到字串過濾,我就想起了 “正規表示式”。

正規表示式是對字串運算的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字串”,這個“規則字串”用來表達對字串的一種過濾邏輯。

正規表示式透過建立具有特定規則的模式,與輸入的字串資訊比較,在特定的函數中使用從而實現字串的匹配、查找、替換及分割等操作。

下面我們來看看如何利用正規表示式來過濾字串,只提取字串中的數字字符,傳回由這些數字字符組成的子串。

例如我們給下面一個字串

$str ='0我是123456一段测试的字789符串0';

想要傳回由數字字元組成的子字串「01234567890」!

方法1、使用preg_replace()函數

分析一下上面的關鍵程式碼:

preg_replace("/ [^0-9]/", "", $str)的意思為匹配除了0~9間的數字以外的字符,並將這些字符替換為空字符,即刪除這些字符即可。那就只剩下數字字元了,所以輸出結果為:

PHP字串學習之利用正規過濾字符,回傳數字字符

我們來簡單了解preg_replace()函數

 preg_replace() 函數可以執行正規表示式的搜尋和替換,是一個強大的字串替換處理函數,該它的語法格式為「preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count ]])”,表示搜尋subject 中符合pattern 的部分, 以replacement 替換;可選參數limit 用於設定最大可替換次數(預設值是-1,可無限制)。

方法2:使用preg_match_all()函數

分析上面的程式碼:

preg_match_all('/\ d /',$str,$array)的意思是在字串$str中多次尋找只包含0~9間數字字元的子字串,將每次的符合結果放在一個陣列$array。我們使用var_dump($array)來輸出這個陣列來看看:

PHP字串學習之利用正規過濾字符,回傳數字字符

#會發現結果陣列$array是一個二維數組,包含匹配結果的元素是內層的數組。而想要將這些元素拼接成一個字串,就需要嵌套兩層foreach循環:

  • #第一層循環中

foreach($array as $arr){
	
}
  • 將內層陣列當作值賦給$arr,所以在第二層迴圈中需要遍歷的陣列變成了$arr

#
foreach($arr as $value){
$result .= $value;
}
  • 在每次循環中,將陣列值賦給變數$value,然後使用「.=」運算子拼接到字串$result中,因此一開始$result需要為空字串。

輸出結果為:

PHP字串學習之利用正規過濾字符,回傳數字字符

#我們來簡單了解preg_match_all()函數。

preg_match_all()函數可以搜尋字串中所有可以和正規表示式匹配的結果,是一個執行全域正規表示式匹配的函數,它的語法格式為

preg_match_all($pattern, $subject [, &$matches [, $flags = PREG_PATTERN_ORDER [, $offset = 0 ]]])
  • #$pattern    正規表示式   

  • $subject    進行配對的字串   

  • #$ 

    #$ 所有符合結果(數組)  
#$ 

preg_match_all() 將實現全部結果的匹配,如果想要匹配成功一次後停止匹配,則需要使用preg_match() 函數。

好了就說到這裡了,有其他想知道的,可以點選這個喔。 → →

php影片教學

 最後給大家推薦閱讀一個經典課程《###PHP字串處理(玉女心經版)###》,免費的~快來學習啊! ###

以上是PHP字串學習之利用正規過濾字符,回傳數字字符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

Rimworld Odyssey如何釣魚
1 個月前 By Jack chen
Kimi K2:最強大的開源代理模型
1 個月前 By Jack chen
我可以有兩個支付帳戶嗎?
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)

熱門話題

Laravel 教程
1602
29
PHP教程
1506
276
超越燈堆:PHP在現代企業體系結構中的作用 超越燈堆:PHP在現代企業體系結構中的作用 Jul 27, 2025 am 04:31 AM

PHPisstillrelevantinmodernenterpriseenvironments.1.ModernPHP(7.xand8.x)offersperformancegains,stricttyping,JITcompilation,andmodernsyntax,makingitsuitableforlarge-scaleapplications.2.PHPintegrateseffectivelyinhybridarchitectures,servingasanAPIgateway

PHP中的對象關聯映射(ORM)性能調整 PHP中的對象關聯映射(ORM)性能調整 Jul 29, 2025 am 05:00 AM

避免N 1查詢問題,通過提前加載關聯數據來減少數據庫查詢次數;2.僅選擇所需字段,避免加載完整實體以節省內存和帶寬;3.合理使用緩存策略,如Doctrine的二級緩存或Redis緩存高頻查詢結果;4.優化實體生命週期,定期調用clear()釋放內存以防止內存溢出;5.確保數據庫索引存在並分析生成的SQL語句以避免低效查詢;6.在無需跟踪變更的場景下禁用自動變更跟踪,改用數組或輕量模式提升性能。正確使用ORM需結合SQL監控、緩存、批量處理和適當優化,在保持開發效率的同時確保應用性能。

用PHP和RabbitMQ建造彈性微服務 用PHP和RabbitMQ建造彈性微服務 Jul 27, 2025 am 04:32 AM

要構建彈性的PHP微服務,需使用RabbitMQ實現異步通信,1.通過消息隊列解耦服務,避免級聯故障;2.配置持久化隊列、持久化消息、發布確認和手動ACK以確保可靠性;3.使用指數退避重試、TTL和死信隊列安全處理失敗;4.通過supervisord等工具守護消費者進程並啟用心跳機制保障服務健康;最終實現系統在故障中持續運作的能力。

python run shell命令示例 python run shell命令示例 Jul 26, 2025 am 07:50 AM

使用subprocess.run()可安全執行shell命令並捕獲輸出,推薦以列表傳參避免注入風險;2.需要shell特性時可設shell=True,但需警惕命令注入;3.使用subprocess.Popen可實現實時輸出處理;4.設置check=True可在命令失敗時拋出異常;5.簡單場景可直接鍊式調用獲取輸出;日常應優先使用subprocess.run(),避免使用os.system()或已棄用模塊,以上方法覆蓋了Python中執行shell命令的核心用法。

為PHP創建準備生產的Docker環境 為PHP創建準備生產的Docker環境 Jul 27, 2025 am 04:32 AM

使用正確的PHP基礎鏡像並配置安全、性能優化的Docker環境是實現生產就緒的關鍵。 1.選用php:8.3-fpm-alpine作為基礎鏡像以減少攻擊面並提升性能;2.通過自定義php.ini禁用危險函數、關閉錯誤顯示並啟用Opcache及JIT以增強安全與性能;3.使用Nginx作為反向代理,限制訪問敏感文件並正確轉發PHP請求至PHP-FPM;4.採用多階段構建優化鏡像,移除開發依賴,設置非root用戶運行容器;5.可選Supervisord管理多個進程如cron;6.部署前驗證無敏感信息洩

VSCODE設置。 JSON位置 VSCODE設置。 JSON位置 Aug 01, 2025 am 06:12 AM

settings.json文件位於用戶級或工作區級路徑,用於自定義VSCode設置。 1.用戶級路徑:Windows為C:\Users\\AppData\Roaming\Code\User\settings.json,macOS為/Users//Library/ApplicationSupport/Code/User/settings.json,Linux為/home//.config/Code/User/settings.json;2.工作區級路徑:項目根目錄下的.vscode/settings

無服務器革命:使用BREF部署可擴展的PHP應用程序 無服務器革命:使用BREF部署可擴展的PHP應用程序 Jul 28, 2025 am 04:39 AM

Bref使PHP開發者能無需管理服務器即可構建可擴展、成本高效的應用。 1.Bref通過提供優化的PHP運行時層,將PHP帶入AWSLambda,支持PHP8.3等版本,並與Laravel、Symfony等框架無縫集成;2.部署步驟包括:使用Composer安裝Bref,配置serverless.yml定義函數和事件,如HTTP端點和Artisan命令;3.執行serverlessdeploy命令即可完成部署,自動配置APIGateway並生成訪問URL;4.針對Lambda限制,Bref提供解決

在PHP中構建不變的物體,並具有可讀的屬性 在PHP中構建不變的物體,並具有可讀的屬性 Jul 30, 2025 am 05:40 AM

ReadonlypropertiesinPHP8.2canonlybeassignedonceintheconstructororatdeclarationandcannotbemodifiedafterward,enforcingimmutabilityatthelanguagelevel.2.Toachievedeepimmutability,wrapmutabletypeslikearraysinArrayObjectorusecustomimmutablecollectionssucha

See all articles