正则获取[img][/img] <img src=""> 标签图片
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则获取[img][/img] <img src=""> 标签图片相关的知识,希望对你有一定的参考价值。
function imgpic($content)
$pattern="/<img[\s\S]*?src\s*=\s*[\"|\'](.*?)[\"|\'][\s\S]*?>/";
preg_match_all($pattern,$content,$match);
<img src="/7.jpg" />
[img]/8.jpg[/img]
<img src="/9.jpg" />
这是目前所用的正则,只能取html的(也就是7和9.jpg)
求大佬修改成也支持取ubb的(7.8.9.都能取到)
//新建regexJsUtil.js文件
参考技术A <html><head><!-- 将此内容保存为 html 文件,浏览器允许运行脚本进行测试。--> <script type="text/javascript"> function check() var str; str = document.getElementById("txtInput").value; alert("替换结果:" + str.replace(/<img[^>]+img\/([^>"]*)"[^>]+\/>/, "$1")); </script></head> <body> 输入:<input type="text" id="txtInput" value='xxxx <img src="img/fxxx.png" /> xxxx' /> <button type="button" onclick="check()">正则替换</button></form> </body></html>/**
* @Description:8、获取正则匹配目标字符串
* @param fatherStr 源完整字符串 "this is test string <img src=\\"http:baidu.com/test.jpg\\" width='50' > 1 and the end <img src=\\"所有地址也能匹配.jpg\\" /> 33! <img src=\\"/uploads/attached/image/20120426/20120426225658_92565.png\\" alt=\\"\\" /> <p>哈哈哈</p> <img src=\\"static/file/tempFile/cutPic.jpg\\" ></img>";
* @param myreg 源子字符串格式(正则表达式)
(1)正则匹配img src,并获取匹配结果。(此处可匹配前三种)
myreg=/<(img|IMG).*?(>|\\/>|><\\/img>)/gi;
myreg=/<(img|IMG).*?src=".*?\\.(jpg|gif|bmp|bnp|png)".*?(>|\\/>|><\\/img>)/gi;
(2)正则匹配src="文件路径",并获取匹配结果。(此处可匹配前三种)
myreg=/src=['"]?([^'"]*)['"]?/gi;
myreg=/src=['"].*?\\.(jpg|gif|bmp|bnp|png)['"]?/gi;
myreg=/src=(['"]?[^'"]*['"]?)/gi;//注意,此行正则得到的matchArr[1]不建议使用,有问题;具体可自行浏览器调试查看对比。
(3)正则匹配img src,并获取匹配结果。(此处可匹配四种)
myreg=/(<img|<IMG|\\[img\\]).*?(>|\\/>|><\\/img>|\\[\\/img\\])/gi;
myreg=/(<img|<IMG|\\[img\\]).*?src=".*?\\.(jpg|gif|bmp|bnp|png)".*?(>|\\/>|><\\/img>|\\[\\/img\\])/gi;
* @Remark:
以下4种img标签样式
<img alt="" src="static/file/tempFile/1.jpg">
<img alt="" src="static/file/tempFile/2.jpg"/>
<img alt="" src="static/file/tempFile/3.jpg"></img>
[img]static/file/tempFile/4.jpg[/img]
* @debugger;
(2)正则匹配src="文件路径",并获取匹配结果。(此处可匹配前三种)
当正则匹配规则为 myreg=/src=(['"]?[^'"]*['"]?)/gi;
执行右侧代码,并在浏览器控制台调试 if (matchArr[0] != '')
// "src=http:baidu.com/test.jpg" ——>转为 "http:baidu.com/test.jpg"
var srcSonStr0=matchArr[0].replace("src=", "");
// "http:baidu.com/test.jpg"
var srcSonStr1=matchArr[1];
strArr.push(srcSonStr1);
*
*/
function getMatchTargetStr()
var fatherStr="this is test string <img src=\\"http:baidu.com/test.jpg\\" width='50' > 1 and the end <img src=\\"所有地址也能匹配.jpg\\" /> 33! <img src=\\"/uploads/attached/image/20120426/20120426225658_92565.png\\" alt=\\"\\" /> <p>哈哈哈</p> <img src=\\"static/file/tempFile/cutPic.jpg\\" ></img>";
var myreg=/(<img|<IMG|\\[img\\]).*?(>|\\/>|><\\/img>|\\[\\/img\\])/gi;
/**###-正则匹配方式3,遍历源完整字符串,依次正则匹配,若匹配成功则返回匹配结果-###*/
// 定义一个数组,用于存取正则匹配目标字符串
var wordArr = new Array();
wordArr=ergoticMyregFun3BackMatcherData(fatherStr,myreg);
console.log("while循环遍历,得到正则替换后的"+wordArr);
console.log(wordArr);
return wordArr;
/**
* @Description: 正则匹配方式3,遍历源完整字符串,依次正则匹配,若匹配成功则返回匹配结果
* @param fatherStr 源完整字符串
* @param myreg 源子字符串格式(正则表达式)
*
*/
function ergoticMyregFun3BackMatcherData(fatherStr,myreg)
// 定义一个数组,用于存取正则匹配目标字符串
var strArr = new Array();
while(true)
var matchArr = myreg.exec(fatherStr);
if(matchArr)
for(var i=0;i<matchArr.length;i++)
console.log("for循环遍历"+matchArr[i]);
console.log(matchArr.index);
if (matchArr[0] != '')
var srcSonStr=matchArr[1];
strArr.push(srcSonStr);
else
break;
return strArr;
正则表达式在 php 中捕获 <img> src [重复]
【中文标题】正则表达式在 php 中捕获 <img> src [重复]【英文标题】:Regex to capture <img> src in php [duplicate] 【发布时间】:2014-07-13 04:07:13 【问题描述】:我想提取 img src 并使用 preg_match_all 我有这个:
$tag = '<img src="path/to/image.png" />';
preg_match_all('/(width|height|src)=("[^"]*")/i',$tag, $img[$tag]);
返回:
Array
(
[<img src="path/to/image.png" />] => Array
(
[0] => Array
(
[0] => src="path/to/image.png"
)
[1] => Array
(
[0] => src
)
[2] => Array
(
[0] => "path/to/image.png"
)
)
)
无论标签中使用双引号还是单引号,我如何编写正则表达式以返回相似的结果?我会写:
$tag = "<img src='path/to/image.png' />";
preg_match_all('/(width|height|src)=(\'[^\']*\')/i',$tag, $img[$tag]);
这可行,但我对正则表达式不够熟悉,无法编写一个表达式来处理。我确实尝试过:
preg_match_all('/(width|height|src)=((\'[^\']*\')|("[^"]*"))/i',$tag, $img[$tag]);
但这似乎会在数组中返回我不想要的额外匹配项。
【问题讨论】:
***.com/questions/1732348/… 是的,一个永恒的问题和永恒的答案。相当愉快的阅读 【参考方案1】:你可以用这个:
(width|height|src)=("[^"]*"|'[^']*')
我基本上使用了交替来匹配“fds”或“fds”。
【讨论】:
谢谢!我知道有人问过这个问题的各种排列,但我的问题不是提取 img,而是像你演示的那样,它是关于交替的正则表达式语法。这正是我想要的,但仍在学习正则表达式。以上是关于正则获取[img][/img] <img src=""> 标签图片的主要内容,如果未能解决你的问题,请参考以下文章