2種方法:1、用for遍歷字符串,在循環(huán)體中將數(shù)字字符拼接成一個(gè)子串,語(yǔ)法“for($i=0;$i<字符串長(zhǎng)度;$i++){if(is_numeric($str[$i])){$r.=$str[$i];}}”;2、用preg_replace()配合正則表達(dá)式來(lái)過(guò)濾字符,提取數(shù)字字符,語(yǔ)法“preg_replace("/[^0-9]/", "", $str)”。
本教程操作環(huán)境:windows7系統(tǒng)、PHP8.1版、DELL G3電腦
php字符串只留下數(shù)字的兩種方法
方法1:使用for語(yǔ)句+is_numeric()+“.=”字符串拼接
<?php header("content-type:text/html;charset=utf-8"); function findNum($str) { $str = trim($str); if (empty($str)) { echo ''; }else{ $result = ''; for ($i = 0; $i < strlen($str); $i++) { if (is_numeric($str[$i])) { $result .= $str[$i]; } } var_dump($result); } } $str = '0我是123456一段測(cè)試的字789符串0'; echo "原字符串:"; var_dump($str); echo "過(guò)濾其他字符串后:"; findNum($str); ?>
分析一下上面的代碼:
-
利用for循環(huán)遍歷字符串$str
-
在循環(huán)體中使用
is_numeric($str[$i])
判斷該$str[$i]
字符是不是數(shù)字字符; -
如果是則取出來(lái),使用 “
.=
”拼接成數(shù)字子串。
看看輸出結(jié)果:
方法2、使用preg_replace()函數(shù)
<?php $str ='0我是123456一段測(cè)試的字789符串0'; $result = preg_replace("/[^0-9]/", "", $str); echo $result; ?>
分析一下上面的關(guān)鍵代碼:
preg_replace("/[^0-9]/", "", $str)
的意思為匹配除了0~9間的數(shù)字以外的字符,并將這些字符替換為空字符,即刪除這些字符即可。那么就只剩下數(shù)字字符了,因此輸出結(jié)果為:
我們來(lái)簡(jiǎn)單了解一下preg_replace()函數(shù)
preg_replace() 函數(shù)可以執(zhí)行正則表達(dá)式的搜索和替換,是一個(gè)強(qiáng)大的字符串替換處理函數(shù),該它的語(yǔ)法格式為“preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])
”,表示搜索 subject 中匹配 pattern 的部分, 以 replacement 進(jìn)行替換;可選參數(shù) limit 用于設(shè)置最大可替換次數(shù)(默認(rèn)值是-1,可無(wú)限制)。
推薦學(xué)習(xí):《PHP視頻教程》
VIP推薦:共22門(mén)課程,總價(jià)3725元,開(kāi)通VIP會(huì)員免費(fèi)