php 正则替换一些例子小结

作者:简简单单 2013-12-11

PHP正则表达式替换的相关概念:

preg_replace:执行正则表达式的搜索和替换

mixed preg_replace (   mixed pattern,   mixed replacement,   mixed subject [, int limit]) preg_replace:允许你替换字符串中匹配到你定义的正则表达式


一个简单的注释移除功能:

 代码如下 复制代码

preg_replace('[(/*)+.+(*/)]', '', $val);


这段代码可以移除在 PHP 和 CSS 中使用 /* 注释 */ 格式的多多行注释。其中的三个参数分别为正则表达式,要替换成的字符串和要替换的目标字符串(这里要做移除功能,所以是个空白字符串 -> '')。如果你想匹配次级规则,可以使用 $0 代表全部匹配,$1、$2 等,以此类推代表分别的次级规则。

在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。

replacement 可以包含 //n 形式或(自 PHP 4.0.4 起)$n 形式的逆向引用,首选使用后者。每个此种引用将被替换为与第 n 个被捕获的括号内的子模式所匹配的文本。n 可以从 0 到 99,其中 //0 或 $0 指的是被整个模式所匹配的文本。对左圆括号从左到右计数(从 1 开始)以取得子模式的数目。

对替换模式在一个逆向引用后面紧接着一个数字时(即:紧接在一个匹配的模式后面的数字),不能使用熟悉的 //1 符号来表示逆向引用。举例说 //11,将会使 preg_replace() 搞不清楚是想要一个 //1 的逆向引用后面跟着一个数字 1 还是一个 //11 的逆向引用。本例中的解决方法是使用 /${1}1。这会形成一个隔离的 $1 逆向引用,而使另一个 1 只是单纯的文字。


例子1:

 代码如下 复制代码

$jobname="行政办—RH021001前台秘书(职位编号:RH021001)";
$jobname=preg_replace("/(.*)/","",$jobname);
$jobname=preg_replace("/.*—.*01/","",$jobname);
//输出:前台秘书

例子2:

 代码如下 复制代码

$str="fsb";s注意调节心态 预防职场心理疲劳";
 
$str=preg_replace("/space.php?uid=(d+)&do=thread&id=(d+)/","/space-0-do-thread-id-${2}.html",$str);
$str=preg_replace("/space.php?uid=(d+)/","/space-${1}.html",$str);
 
//输出:fsb";s注意调节心态 预防职场心理疲劳


例子3: 正则提取或替换img标记属性

 

 代码如下 复制代码

/*PHP正则提取图片img标记中的任意属性*/
$str = '


PHP正则提取或更改图片img标记中的任意属性
';

//1、取整个图片代码
preg_match('/]*?srcs*=s*('|")(.*?)\1[^>]*?/?s*>/i',$str,$match);
echo $match[0];

//2、取width
preg_match('//i',$str,$match);
echo $match[1];

//3、取height
preg_match('//i',$str,$match);
echo $match[1];

//4、取src
preg_match('//i',$str,$match);
echo $match[1];

/*PHP正则替换图片img标记中的任意属性*/
//1、将src="/uploads/images/20100516000.jpg"替换为src="/uploads/uc/images/20100516000.jpg")
print preg_replace('/()/i',"${1}uc/images/${3}",$str);
echo "


";

//2、将src="/uploads/images/20100516000.jpg"替换为src="/uploads/uc/images/20100516000.jpg",并省去宽和高
print preg_replace('/(/i',"${1} ${2}uc/images/${3}>",$str);

?>

相关文章

精彩推荐