很多站长朋友们都不太清楚php正则取img,今天小编就来给大家整理php正则取img,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 求一个php的正则表达式,提取img标签里的值 2、 如何取出img标签的正则表达式(php) 3、 求教php正则高手。php正则获取html内容中的所有img路径及名称,替换img的路径 4、 php 正则匹配 获取img的src,过滤后显示统一的格式 5、 请问怎样用php 正则表达式取设置宽和高的[/img]标签里面的图片地址 求一个php的正则表达式,提取img标签里的值替换:<img?[^>]*?data-inner="(\[[^"]*?\])">
为:$1
php语言:
$pattern?=?'#<img?[^>]*?data-inner="(\[[^"]*?\])">#is';
$html?=?preg_replace($pattern,?'$1',?$html);
如何取出img标签的正则表达式(php)下面我提供点写法:
<?php?
$html='<img?src="/data/upload/help/202303/02/93d2ba6f9a4fb675b9ed422751680f84.png"?alt=""?/>
???????<img?src="/data/upload/help/202303/02/93d2ba6f9a4fb675b9ed422751680f84.png"?alt=""?width="233"?/>
????<img?src="/data/upload/help/202303/02/93d2ba6f9a4fb675b9ed422751680f84.png"?alt=""?height="400"?/>
???';
$trip=array('width','height');//过滤的标签,这个根据需要修改
preg_match_all('/<img[^>]*\>/',$html,$match);//匹配img标签
$res=array();//结果存放
foreach($match[0]?as?$val)
{
$flag=true;//是否满足条件
foreach($trip?as?$s)
{
???if(preg_match('/'.$s.'/',$val))//查到在过滤的标签中,不满足条件
{
???$flag=false;
???break;
????}
}
if($flag)
{
???preg_match_all('/image[^\"]*"/',$val,$temp);//满足条件取出类似image/20140912/20140912041822_11373.png"这一段
???$res[]=substr(substr($temp[0][0],0,-1),6);//取出类似20140912/20140912041822_11373.png这一段,并存放到结果数组中
}
}
var_dump($res);
?>
??
求教php正则高手。php正则获取html内容中的所有img路径及名称,替换img的路径正则表达式:(?<=<img src=\")(/.+/)(.+?\.(gif|jpg|png))(?=\">)
分别取第0和第2捕获组的数据,就是你要的获取/abc/efg/qwe/1.gif和获取1.gif的数据
替换你可以用上面的正则表达式:(?<=<img src=\")(/.+/)(.+?\.(gif|jpg|png))(?=\">)
替换成:style/images/$2
我给你一个用Java实现的上述正则表达式的例子.
import?java.util.regex.Matcher;
import?java.util.regex.Pattern;
public?class?CC?{
?public?static?void?main(String[]?args)?{
??String?s="<img?src=\"/abc/efg/qwe/1.gif\">";
??String?regex="(?<=<img?src=\")(/.+/)(.+?\\.(gif|jpg|png))(?=\">)";
??Pattern?p=Pattern测试数据pile(regex);
??Matcher?m=p.matcher(s);
??while(m.find()){
???System.out.println(m.group());
???System.out.println(m.group(2));
??}
??System.out.println(s.replaceAll("(?<=<img?src=\")(/.+/)(.+?\\.(gif|jpg|png))(?=\">)",?"style/images/$2"));
?}
}
运行结果:
/abc/efg/qwe/1.gif
1.gif
<img src="/data/upload/help/202303/02/3c36b1ab96386656257cbf308edafa82.gif">
php 正则匹配 获取img的src,过滤后显示统一的格式没人回来,可能就是替换上比较难达成,主要是这匹配非字符串不行。
那换个思路,<img ....> 这个格式是固定的,可以忽略,那么重要的是src及等号后的这串字符。那么就有方法了。
$a='要匹配的字符串'
//$b即用来存储搜索的结果。
preg_match_all('/src=[^\s>]*/',$a,$b);
for($i=0;$i<count($b[0]);$i++){
echo?'<img?'.$b[0][$i].'>';
}
这样所得到的结果基本上就等于是你所想要的结果。
请问怎样用php 正则表达式取设置宽和高的[/img]标签里面的图片地址用php给你运行了一个
$txt='[img=442,296]图片地址1[/img]
[img=300,188]图片地址2[/img]
[img=120,206]图片地址3[/img]';
$re='/\[img\=(\d+,\d+)\](\S+?)\[\/img\]/';//这里修改下,加上一个?防止以单行文本导致的定界符不准问题
$arr=[];
preg_match_all($re,$txt,$arr);
var_dump($arr);
运行结果如下
php?test.php
array(3)?{
??[0]=>
??array(3)?{
????[0]=>
????string(32)?"[img=442,296]图片地址1[/img]"
????[1]=>
????string(32)?"[img=300,188]图片地址2[/img]"
????[2]=>
????string(32)?"[img=120,206]图片地址3[/img]"
??}
??[1]=>
??array(3)?{
????[0]=>
????string(7)?"442,296"
????[1]=>
????string(7)?"300,188"
????[2]=>
????string(7)?"120,206"
??}
??[2]=>
??array(3)?{
????[0]=>
????string(13)?"图片地址1"
????[1]=>
????string(13)?"图片地址2"
????[2]=>
????string(13)?"图片地址3"
??}
}
//增加一个矩阵转换
$txt?=?'[img=442,296]图片地址1[/img][img=300,188]图片地址2[/img][img=120,206]图片地址3[/img][img=120,206]wwww[/img]';
$re?=?'/\[img\=(\d+,\d+)\](\S+?)\[\/img\]/';
var_dump(preg_match_all_to_array($re,$txt));
function?preg_match_all_to_array($re,?$txt)
{
????$arrs?=?[];
????preg_match_all($re,?$txt,?$arrs);
????if($arrs===false)
????????return?$arrs;
????//移除到总匹配数据
????array_shift($arrs);
????$return=[];
????//获取矩阵纵长
????$arrs_longitudinal=count($arrs);
????for($i=0;$i<$arrs_longitudinal;$i++){
????????//获取单列横长
????????$arrs_transverse=count($arrs[$i]);
????????for($j=0;$j<$arrs_transverse;$j++){
????????????$return[$j][$i]=$arrs[$i][$j];
????????????unset($arrs[$i][$j]);
????????}
????????unset($arrs[$i]);
????}
????return?$return;
}
关于php正则取img的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php正则取img php正则取中间的详细内容...