php字串怎麼只提取中文字符
兩種方法:1、用preg_match_all()配合正規過濾字串,語法「preg_match_all("/[\x{4e00}-\x{9fff}] /u","$str", $arr);」;2、用preg_replace()配合正規搜尋字串中的非中文字母,並將其替換成空字符,語法「preg_replace("/[^\x{4E00}-\x{9FFF} ] /u",'',$str)」。
本教學操作環境:windows7系統、PHP8.1版、DELL G3電腦
在php中,可以利用以下兩種函數來只提取字串的中文字元
preg_replace()函數
preg_match_all()函數
#方法1:使用preg_match_all()函數
preg_match_all()函數來配合正規表示式「/[\x{4e00}-\x {9fff}] /u
」可以過濾字串,只取得中文字元。
會將符合的中文字元一個個存入數組中(該陣列由第三個參數指定)。
<?php header("Content-type:text/html;charset=utf-8"); $str = "欢迎4546来到php这里。zblog,我的?#$%^天呀&())*(&^"; echo $str; preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$str",$arr); var_dump($arr); ?>
然後可以使用join()函數將結果值拼接成一個字串。
join('',$arr[0])
說明:
1)preg_match_all()函數
preg_match_all()函數會搜尋字串中所有可以和正規表示式匹配的結果
preg_match_all(pattern,subject,matches,flags,offset)
參數說明如下:
- pattern:要搜尋的模式,也就是定義好的正規表示式;
- subject:要搜尋的字串;
- matches:可選參數(多維數組),用來存放所有匹配的結果, 數組排序透過$flags 指定;
- flags:可選參數,可以結合下面幾個標記使用(注意不能同時使用PREG_PATTERN_ORDER 和PREG_SET_ORDER):
- PREG_PATTERN_ORDER:結果排序為$matches[0] 保存完整模式的所有匹配,$matches[1] 保存第ches一個子組的所有匹配,以此類推。
- PREG_SET_ORDER:結果排序為$matches[0] 包含第一次匹配得到的所有匹配(包含子組), $matches[1] 是包含第二次匹配到的所有匹配(包含子組)的數組,以此類推。
- PREG_OFFSET_CAPTURE:如果這個標記被傳遞,每個發現的匹配回傳時會增加它相對目標字串的偏移量。注意這會改變 $matches 中的每一個匹配結果字串元素,使其成為一個第 0 個元素為匹配結果字串,第 1 個元素為匹配結果字串在 subject 中的偏移量。
- offset:可選參數,$offset 用於從目標字串中指定位置開始搜尋(單位是位元組)。
preg_match_all() 函數可以傳回 pattern 的符合次數(可能是 0),如果發生錯誤則傳回 FALSE。
2)join()函數
join() 函數傳回由陣列元素組合成的字串。
join() 函數是 implode() 函數的別名。
join(separator,array)
separator:可選。規定數組元素之間放置的內容。預設是 ""(空字串)。
array:必要。要組合為字串的陣列。
傳回值:傳回一個由陣列元素組合成的字串。
方法2:使用preg_replace()函數
#preg_match_all()函數來配合正規表示式「/[^\x{ 4E00}-\x{9FFF}] /u
」搜尋字串中的非中文字母,並將其替換成空字元''
即可。
<?php header("Content-type:text/html;charset=utf-8"); $str= 'php中文网!-=1548'; echo $str."<br>"; $pattern = "/[^\x{4E00}-\x{9FFF}]+/u"; $newstr=preg_replace($pattern,'', $str);preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$str",$arr); var_dump($newstr); ?>
說明:preg_replace()
preg_replace() 函數可以執行正規表示式的搜尋和替換,是個強大的字串替換處理函數,函數的語法格式如下:
preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
參數說明如下:
- $pattern:要搜尋的模式,可以使字串或字串陣列;
- $replacement:用於替換的字串或字串陣列。如果這個參數是一個字串,而 $pattern 是一個數組,那麼所有的模式都使用這個字串進行替換。如果 $pattern 和 $replacement 都是數組,每個 $pattern 使用 $replacement 中對應的元素進行替換。如果 $replacement 中的元素比 $pattern 中的少,多出來的 $pattern 使用空字串進行替換。
- $subject:要進行搜尋和替換的字串或字串數組,如果$subject 是一個數組,搜尋和替換回在$subject 的每一個元素上進行, 並且返回值也會是一個數組。
- $limit:可選參數,每個模式在每個 $subject 上進行替換的最大次數。預設是 -1(無限)。
- $count:可選參數,如果指定,將會被填入完成的替換次數。
如果 $subject 是一個數組,preg_replace() 函數會傳回一個數組,在其他情況下會傳回字串。
如果函數 preg_replace() 搜尋到符合項,則會傳回被取代後的 $subject,否則傳回沒有改變的 $subject。 preg_replace() 函數的每個參數(除了參數 $limit)可以是一個陣列。如果參數 $pattern 和參數 $replacement 都是數組,那麼函數將以其鍵名在數組中出現的順序來進行處理。如果發生錯誤,則傳回 NULL。
參數 $replacement 中可以包含後向引用 \\n 或 $n,語法上首選後者。每個這樣的引用將被匹配到的第 n 個捕獲子組捕獲到的文本替換。 n 可以是 0-99,\\0 和 $0 代表完整的模式匹配文字。
推薦學習:《PHP影片教學》
以上是php字串怎麼只提取中文字符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

CakePHP 是 PHP 的開源框架。它旨在使應用程式的開發、部署和維護變得更加容易。 CakePHP 基於類似 MVC 的架構,功能強大且易於掌握。模型、視圖和控制器 gu

登入 CakePHP 是一項非常簡單的任務。您只需使用一項功能即可。您可以記錄任何後台程序(如 cronjob)的錯誤、異常、使用者活動、使用者採取的操作。在 CakePHP 中記錄資料很容易。提供了 log() 函數
