>  기사  >  백엔드 개발  >  PHP에서 정규식을 사용하여 바꾸는 방법

PHP에서 정규식을 사용하여 바꾸는 방법

藏色散人
藏色散人원래의
2020-11-25 10:26:295728검색

php正则表达式实现替换的方法:首先创建一个PHP示例文件;然后定义一个字符串;最后通过正则表达式“preg_replace("/[0-9]/","",$str);”去掉字符串中所有数字即可。

PHP에서 정규식을 사용하여 바꾸는 방법

本教程操作环境:Windows7系统、PHP5.6版,该方法适用于所有品牌电脑。

推荐:《PHP视频教程

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次又不符合条件了。
总结一下,上面我们学会了 * + ? 和大括号{}表示重复次数的方法。

----------------------------------------------------------------------------------------------------

    $s=preg_replace("/(.*?[月票|求|更].*?)/i","",$s);
    preg_match_all(&#39;/href=\"([0-9]+)\.shtm">(.+?)<\/a>/i&#39;,$s,$arr_dstorycate);    
    print_r($arr_dstorycate);

----------------------------------------------------------------------------------------------------

   preg_match_all("/<img.*?src=[\\\&#39;| \\\"](.*?(?:[\.gif|\.jpg]))[\\\&#39;|\\\"].*?[\/]?>/i",$content,$arr_dstorycate);            
   print_r($arr_dstorycate);

补充:

.$pattern是数组,$replace也是数组,则中对应的 元素进行替换

php

preg_replace有五个参数,有三个是必须参数

Preg_replace(mixed $pattern, mixed $replacement, mixed $subject [,int $limit = -1 [,int $count ]]);

 $pattern 可以是字符串,字符串数组,或者preg

$replace 是用于替换的字符串或字符串数组

$subject 目标字符串或者目标字符串数组

$limit 每个模式在每个$subject上最大的替换次数,默认是-1(无限次)

$count 返回在目标字符串所替换的次数

在repalce与pattern中有几点要注意的

1.$pattern是数组,$replace也是字符串,那么所有模式都使用这个字符串来匹配;

 

2.$pattern是数组,$replace也是数组,则中对应的 元素进行替换

3.如果数组$pattern大于$replace,则多出来的$pattern用空的字符串进行替换,


$replace少于$patterns,则匹配到的值全部用空字符串来替换

4. 위 예에 나타나는 ${1}, ${2}, ${3}, 에 대해 이를 역참조 라고 하며, 안의 숫자는 해당 내용이 포함되는 자릿수를 나타냅니다. atom이 나타납니다, 두 가지 유형이 있습니다. ,를 쓰는 방법 중 하나는 \n, ${n}, atom을 쓰는 방법, 을 사용하는 것이 좋습니다. 대상 문자열과 일치할 pattern은 요구 사항에 따라 변경됩니다. 대상 문자열 , 또는 일치하는 원자의 형식은 그대로 출력됩니다(여기에 두 가지 예가 있습니다) ㅋㅋㅋ , 그리고 ${4}는 $patterns ((d{ 1,2}))의 네 번째 원자와 일치합니다. 예를 들어, smarty 템플릿 엔진의 친숙한 컴파일 및 교체 방법 5. 네 번째 매개변수 $limit,4번째 매개변수의 사용은 각 주제에 대해 각 패턴이 대체되는 최대 횟수를 의미합니다.

limit가 n이면 n번만 대체됩니다. 정규 표현식


6. 다섯 번째 매개변수 $count 사용 시, $count는 주제 대상 문자열이 교체된 횟수를 의미합니다. 위 코드의 실행 결과는 다음과 같습니다. :

추가: preg_replace와 str_replace의 관계는 무엇입니까?str_replace는 preg_repalce의 하위 집합이라는 것을 알 수 있습니다. 단지 str_replace의 첫 번째 매개 변수가 문자열로 기록되고 preg_replace가 기록된다는 점입니다. 정규식으로

위 내용은 PHP에서 정규식을 사용하여 바꾸는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.