正则获取[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文件


/**

* @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;

参考技术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>

正则表达式在 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=""> 标签图片的主要内容,如果未能解决你的问题,请参考以下文章

php匹配<img/>,添加width,height

如何使用正则表达式来获取“img”标签?

PHP正则匹配img标签的正则 并获得alt属性的值

如何动态更改多个video标签的src路径?比如src=a/x.mp4(x=1-10)

javascript 正则替换IMG标签

正则表达式在 php 中捕获 <img> src [重复]