您好,登錄后才能下訂單哦!
如何使用PHP正則替換preg_replace函數?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
PHP正則替換preg_replace函數的使用方法:1、去掉0字符,代碼為【preg_replace("/0/","",$str)】;2、去掉所有數字,代碼為【preg_replace("/[0-9]/","",$str)】。
PHP正則替換preg_replace函數的使用方法:
<?php $str="as2223adfsf0s4df0sdfsdf"; echo preg_replace("/0/","",$str);//去掉0字符,此時相當于 replace的功能, preg_replace("/0/","A",$str); 這樣就是將0變成A的意思了 echo preg_replace("/[0-9]/","",$str);//去掉所有數字 echo preg_replace("/[a-z]/","",$str); //這樣是去掉所有小寫字母 echo preg_replace("/[A-Z]/","",$str); //這樣是去掉所有大寫字母 echo preg_replace("/[a-z,A-Z]/","",$str); //這樣是去掉所有字母 $str="as2223adfsAAf0s4df0s中國人dD中南海DDfsdf"; echo preg_replace("/[a-z,A-Z,0-9]/","",$str); //去掉所有字母和數字 ?>
經過以上的例子,相信大家知道,[ ]
和里面的,有什么作用了。也可以看到,匹配的字符串必須加 / /
(看例子的第一個參數)
<?php $str="acsdcs<55555555>sc<6666>sdcd"; echo preg_replace("/<.*>/","",$str);
這個是表示去除以<
開頭,以>
結尾的那部份,輸出結果是:acsdcssdcd
注意:上面的 .* 是表示任何字符,也就是說不管<>包住的是什么都去掉其中. 表示任意字符, * 表示任意個數
現在我們來改動一下,如果不想是任何個數呢?
$str="acsdcs<55555555>sc<6666>sdcd";
echo preg_replace("/<.{4}>/","",$str);
//此時輸出:acsdcs<55555555>scsdcd因為{4}指定了條件:<>內為4個字符的才滿足條件,所以<55555555>不符合條件,沒有被替換。
注意:這時我們又學到了一個知識點{數字} 表示指定前面的個數,*就表示是任意個(0--無限個)
表示重復次數的除了 *, {指定次數} 表示,還有很多表達形式:
<?php $str="acsdcs<55555555>sc<6666>sd<>cd"; echo preg_replace("/<[0-9]*>/","",$str); //輸出acsdcscd echo "<hr>"; echo preg_replace("/<[0-9]+>/","",$str); //輸入acsdcsscsd<>cd ?>
上面的例子只要是為了 表達 * 與+的區別 ,* 表示重復0數或n 次,而+ 表示1次以上,即一例中<[0-9]+ >表示<>里面至少要有一個數字才符合條件。
相信這時大家知道,為什么上例中用* 和用+輸出的結果不同了吧
再來:
<?php $str="acsdcs<55555555>sc<6666>sd<>cd"; echo preg_replace("/<[0-9]?>/","",$str); //輸出acsdcs<55555555>sc<6666>sdcd ?>
看[0-9]? 這里的?表示要是0次或1 次,超過1次又不符合條件了。
總結一下,上面我們學會了 * + ? 和大括號{}表示重復次數的方法。
看完上述內容,你們掌握如何使用PHP正則替換preg_replace函數的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。