php 正则匹配img标签中的自定义属性值
将原始的字符串 正则匹配替换成指定的字符串类型
如以下的字符串:
$str="<p>张三去吃饭喝酒</p><p><img src=\"https://www.baidu.com/Uploads/temp/2202151602455277.png\" data-id=\"2458\" data-path=\"/temp/2202151602455277.png\"></p><p>332iojdfiojfvijfvi</p><p><br></p><p><img src=\"https://www.baidu.com/Uploads/temp/2202151602456643.png\" data-id=\"2457\" data-path=\"/temp/2202151602456643.png\"></p><p>好的好的收到收到会不会不舍得好久不见表达式</p><p><br></p><p><img src=\"https://www.baidu.com.com/Uploads/temp/2202151602456643.png\" data-id=\"2457\" data-path=\"/temp/2202151602456643.png\"></p><p><br></p><img data-id=\"2456\" data-path=\"/temp/2202151602453547.png\" src=\"https://www.baidu.com/Uploads/temp/2202151602453547.png\" />";
将所有的img标签中的内容替换成 [IMG] data-id的值,data-path的值 [/IMG] 这种格式的值
需要使用到的php函数是
preg_replace() 函数执行一个正则表达式的搜索和替换。 语法
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int KaTeX parse error: Expected 'EOF', got '&' at position 19: …it = -1 [, int &̲count ]] ) 搜索 subject 中匹配pattern 的部分, 以 replacement 进行替换。
参数说明:
$pattern: 要搜索的模式,可以是字符串或一个字符串数组。
$replacement: 用于替换的字符串或字符串数组。
$subject: 要搜索替换的目标字符串或字符串数组。 $limit: 可选,对于每个模式用于每个 subject
字符串的最大可替换次数。 默认是-1(无限制)。 $count: 可选,为替换执行的次数。使用案例:
将 google 替换为 runoob
<?php
> $string = 'google 123, 456';
> $pattern = '/(\w+) (\d+),
> (\d+)/i';
> $replacement = 'runoob ${2},$3';
> echo preg_replace($pattern,
>结果是 $replacement, $string);
>?>
具体操作的代码:
//原始字符串
$str="<p>张三去吃饭喝酒</p><p><img src=\"https://www.baidu.com/Uploads/temp/2202151602455277.png\" data-id=\"2458\" data-path=\"/temp/2202151602455277.png\"></p><p>332iojdfiojfvijfvi</p><p><br></p><p><img src=\"https://www.baidu.com/Uploads/temp/2202151602456643.png\" data-id=\"2457\" data-path=\"/temp/2202151602456643.png\"></p><p>好的好的收到收到会不会不舍得好久不见表达式</p><p><br></p><p><img src=\"https://www.baidu.com/Uploads/temp/2202151602456643.png\" data-id=\"2457\" data-path=\"/temp/2202151602456643.png\"></p><p><br></p><img data-id=\"2456\" data-path=\"/temp/2202151602453547.png\" src=\"https://www.baidu.com/Uploads/temp/2202151602453547.png\" />";
$preg = '/<img.*?data-id=[\'|\"](.*?)[\'|\"].*?data-path=[\'|\"](.*?)[\'|\"].*?[\/]?>/'; // 匹配的正则表达式
$str=preg_replace($preg, '[IMG]$1,$2[/IMG]',$str);
var_dump($content);
结果是
<p>张三去吃饭喝酒</p><p>[IMG]2458,/temp/2202151602455277.png[/IMG]</p><p>332iojdfiojfvijfvi</p><p><br></p><p>[IMG]2457,/temp/2202151602456643.png[/IMG]</p><p>好的好的收到收到会不会不舍得好久不见表达式</p><p><br></p><p>[IMG]2457,/temp/2202151602456643.png[/IMG]</p><p><br></p>[IMG]2456,/temp/2202151602453547.png[/IMG]
使用到的技术有
php函数 preg_replace()使用
正则表达式的使用