`
txf2004
  • 浏览: 7040173 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

preg_match_all结合str_replace替换内容中所有img

阅读更多

最近做站的时候,采集了大量的数据,但采回来的数据基本上都要经过过滤原站保留的数据,其中IMG就是一个地方。网站上好多这些应用例子似乎没有必要“秀”出来,但站已几天没写日志,那就来一个吧

采集回来的图片img标签中,有好多javascript脚本和无用的信息,必需过替换自己想要的,比如alt。先看看要过滤的内容,我随便复制出来:

sdfsdfsdf<img alt=”3568df.com靓图” src=”http://www.aaa.com/upimg /080330/120D1232295023X0.gif” mce_src=”http://www.eee.com/upimg/080330 /120D1232295023X0.gif” width=1 onclick=”javascript:; ” onload=”javascript:if(this.width>500){this.resized=true; this.style.width=500;}”>sfsdfsdfasdfsadf<img alt=”3568df.com靓图 ” src=”http://www.3568.com/upimg/080330 /120D1232295023X0.gif” mce_src=”http://www.ddd.com/upimg/080330 /120D1232295023X0.gif” width=1 onclick=”javascript:; ” onload=”javascript:if(this.width>500){this.resized=true; this.style.width=500;}”>sdfsadf<img alt=”3568df.com靓图 ” src=”http://www.xxx.com/upimg/080330/120D1232295023X0.gif” mce_src=”http://www.sss.com/upimg/080330/120D1232295023X0.gif” width=1 onclick=”javascript:;” onload=”javascript:if(this.width>500){this.resized=true;this.style.width=500;}”>sdfsdf


要把上面替换成形如:
<img alt=”我的信息” src=”http://www.xxx.com/upimg /080330/120D1232295023X0.gif” mce_src=”http://www.xxx.com/upimg/080330 /120D1232295023X0.gif” /> 其中src=”http://www.xxx.com/upimg/080330 /120D1232295023X0.gif” mce_src=”http://www.xxx.com/upimg/080330 /120D1232295023X0.gif”这个地址要保留,因为图片用的都是源地址


方法大致是:先读取内容里的所以IMG标签,然后把每个IMG标签的SRC抽取出来,并且组合成自己的内容,最后进行替换。

preg_match_all就是我想要的函数,它能够把正则表达式匹配到的内容建立一个三维数组,你可以对它们进行遍历查找替换,不太了解的请查查手册,这里不作具体介绍。函数代码:

function replace($str)
{
preg_match_all(”/<img(.*)(src=\”[^\"]+\”)[^>]+>/isU”, $str, $arr);
for($i=0,$j=count($arr[0]);$i<$j;$i++){
$str = str_replace($arr[0][$i],”<img alt=\”我的信息” “.$arr[2][$i].” />”,$str);
}
return $str;
}

分享到:
评论

相关推荐

    php preg_match_all结合str_replace替换内容中所有img

    在PHP编程中,`preg_match_all` 和 `str_replace` 是两个非常重要的字符串处理函数,它们经常被用来处理HTML或XML文档中的特定内容。在这个场景中,开发者需要从采集的数据中提取并替换`&lt;img&gt;`标签,以符合站点的...

    正则表达式实例 网页前端开发

    `preg_match_all` 函数用于查找所有匹配项,然后循环遍历结果。 4. **分析域名**: 使用 `/https?:\/\/([^\/]+).*/i` 正则表达式,可以提取URL中的域名部分,`preg_replace` 函数则去掉 "www." 前缀。 5. **UBB...

    php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)

    print preg_replace('/(&lt;img.+src=/"?.+)(images\/)(.+\/(jpg|gif|bmp|png|jpeg))/"?.+&gt;)/i', "/${1}_thumbs/Images/${3}", $str); ``` 这段代码会寻找以`images/`开头的`src`属性,并在其前面添加`_thumbs/Images/...

    upload_file.js

    $img_path = str_replace('./uploads/', '', $img_path); return json(['re'=&gt;$img_path]); }else{ return json(['re'=&gt;'失败']); } }else{ //文件类型错误 return json(['re'=&gt;'错误']); } }else{ //...

    初级的用php写的采集程序

    例如,在给定的代码中,`preg_match_all()`函数结合正则表达式用于查找并提取网页中的图片链接。正则表达式可以灵活地定义匹配规则,适应各种网页结构。 **4. 图片采集** 在上述代码中,`getimg()`函数是一个用于...

    解析PHP正则提取或替换img标记属性

    这段代码不仅替换了src属性,还直接替换了整个img标签,同时在替换字符串中省略了宽和高属性的引用。 从上述内容可以看出,使用正则表达式处理HTML标签的提取和替换需要对正则表达式的构成有深入理解。这对于进行...

    php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)

    1. 使用`preg_match_all`函数和相应的正则表达式模式匹配内容中的所有a标签和img标签,并将它们暂存到一个数组中。 2. 使用`preg_replace`函数将匹配到的a标签和img标签替换为统一的标记`&lt;{link}&gt;`和`&lt;{img}&gt;`。 3...

    php使用正则表达式获取图片url的方法

    PHP中的正则表达式功能通过一系列函数实现,比如`preg_match`, `preg_match_all`, `preg_replace`等。其中`preg_match_all`用于全局匹配正则表达式的所有可能结果。 在本例中,我们关注的正则表达式模式是`/[img|...

    PHP 提取图片img标记中的任意属性的简单实例

    在文章的后半部分,演示了如何使用preg_replace()函数来修改img标签的src属性值,以及如何在替换的同时去除width和height属性。通过正则表达式中捕获组的使用(例如(\${1}、\${2}等),可以在替换文本中引用到匹配...

    PHP正则获取页面所有图片地址

    `preg_match_all`函数用于执行一个全局正则表达式匹配,查找字符串中所有匹配的结果,并将结果以数组的形式返回。而正则表达式则是一种使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。 在给出...

    js获取富文本中的第一张图片(正则表达式)

    PHP中的`preg_match_all`函数可以用来执行正则表达式匹配,获取字符串中的所有匹配项。以下是一个PHP函数示例,该函数可以获取传入文本中的首张图片地址: ```php function getPic($content) { if(preg_match_all...

    php 替换文章中的图片路径,下载图片到本地服务器的方法

    src="([^"]*)"[^&gt;]*&gt;#i` 匹配所有的 `&lt;img&gt;` 标签,并通过 `preg_match_all()` 函数获取所有图片的 `src` 属性值。 4. **下载图片**: 对于每个匹配到的图片链接,先检查它是否是绝对URL(即包含 "http://" 或 ...

    PHP下载远程图片并保存到本地方法总结

    preg_match_all("/(src|SRC)=[\"|'| ]{0,}(http:\/\/(.*)\.(gif|jpg|jpeg|bmp|png))/isU", $body, $img_array); // ... foreach($img_array[2] as $key =&gt; $value){ $rndFileName = $imgPath."/".$milliSecond.$...

    php采集文章中的图片获取替换到本地(实现代码)

    `preg_match_all`函数会返回一个数组,其中 `$match[1]` 包含所有匹配的图片URL。 4. **处理图片URL**: - 遍历匹配到的图片URL,如果URL已经是绝对路径(以'http://'或'https://'开头),则直接保存;否则,将它...

    PHP工程师试题.docx

    preg_match_all('/https?:\/\/(www\.)?sina\.com\.cn[^\s]*"/i', $content, $matches); ``` 2. 二分查找算法(折半查找): ``` function binary_search($array, $target) { $left = 0; $right = count($...

    用户头像上传修改显示

    $img_path = str_replace($new_file); // 此处有误,应使用正确的路径获取方式 $filename['url'] = 'http://' . $_SERVER['HTTP_HOST'] . '/' . $new_file; // 构建图片URL $filename['key'] = $new_file; ...

    用php实现的获取网页中的图片并保存到本地的代码

    preg_match_all('/&lt;img\\ssrc=(http:\/\/.*?)(\\s(.*?)&gt;|&gt;)/i', $result, $matches); foreach ($matches[1] as $value) { echo $value . " \n"; // GrabImage($value, $filename = ""); } } ``` ##### 3. `...

    wordpress抓取文章第一张远程图片保存到本地的方法

    preg_match('/&lt;img.+src=[\'"]([^\'"]+)[\'"].*&gt;/i', $post-&gt;post_content, $images); if (!empty($images)) { foreach ($images as $image) { if (strpos($image, 'http') === 0) { $first_image = $images[1]; ...

    php实现base64图片上传方式实例代码

    $img_path = str_replace('../../..', '', $new_file); echo '图片上传成功 ![](' .$img_path. ')'; } else { echo '图片上传失败 '; } } } ?&gt; ``` - **参数获取**:从`$_POST`数组中获取Base64...

Global site tag (gtag.js) - Google Analytics