最近做站的时候,采集了大量的数据,但采回来的数据基本上都要经过过滤原站保留的数据,其中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` 是两个非常重要的字符串处理函数,它们经常被用来处理HTML或XML文档中的特定内容。在这个场景中,开发者需要从采集的数据中提取并替换`<img>`标签,以符合站点的...
`preg_match_all` 函数用于查找所有匹配项,然后循环遍历结果。 4. **分析域名**: 使用 `/https?:\/\/([^\/]+).*/i` 正则表达式,可以提取URL中的域名部分,`preg_replace` 函数则去掉 "www." 前缀。 5. **UBB...
print preg_replace('/(<img.+src=/"?.+)(images\/)(.+\/(jpg|gif|bmp|png|jpeg))/"?.+>)/i', "/${1}_thumbs/Images/${3}", $str); ``` 这段代码会寻找以`images/`开头的`src`属性,并在其前面添加`_thumbs/Images/...
$img_path = str_replace('./uploads/', '', $img_path); return json(['re'=>$img_path]); }else{ return json(['re'=>'失败']); } }else{ //文件类型错误 return json(['re'=>'错误']); } }else{ //...
例如,在给定的代码中,`preg_match_all()`函数结合正则表达式用于查找并提取网页中的图片链接。正则表达式可以灵活地定义匹配规则,适应各种网页结构。 **4. 图片采集** 在上述代码中,`getimg()`函数是一个用于...
这段代码不仅替换了src属性,还直接替换了整个img标签,同时在替换字符串中省略了宽和高属性的引用。 从上述内容可以看出,使用正则表达式处理HTML标签的提取和替换需要对正则表达式的构成有深入理解。这对于进行...
1. 使用`preg_match_all`函数和相应的正则表达式模式匹配内容中的所有a标签和img标签,并将它们暂存到一个数组中。 2. 使用`preg_replace`函数将匹配到的a标签和img标签替换为统一的标记`<{link}>`和`<{img}>`。 3...
PHP中的正则表达式功能通过一系列函数实现,比如`preg_match`, `preg_match_all`, `preg_replace`等。其中`preg_match_all`用于全局匹配正则表达式的所有可能结果。 在本例中,我们关注的正则表达式模式是`/[img|...
在文章的后半部分,演示了如何使用preg_replace()函数来修改img标签的src属性值,以及如何在替换的同时去除width和height属性。通过正则表达式中捕获组的使用(例如(\${1}、\${2}等),可以在替换文本中引用到匹配...
`preg_match_all`函数用于执行一个全局正则表达式匹配,查找字符串中所有匹配的结果,并将结果以数组的形式返回。而正则表达式则是一种使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。 在给出...
PHP中的`preg_match_all`函数可以用来执行正则表达式匹配,获取字符串中的所有匹配项。以下是一个PHP函数示例,该函数可以获取传入文本中的首张图片地址: ```php function getPic($content) { if(preg_match_all...
src="([^"]*)"[^>]*>#i` 匹配所有的 `<img>` 标签,并通过 `preg_match_all()` 函数获取所有图片的 `src` 属性值。 4. **下载图片**: 对于每个匹配到的图片链接,先检查它是否是绝对URL(即包含 "http://" 或 ...
preg_match_all("/(src|SRC)=[\"|'| ]{0,}(http:\/\/(.*)\.(gif|jpg|jpeg|bmp|png))/isU", $body, $img_array); // ... foreach($img_array[2] as $key => $value){ $rndFileName = $imgPath."/".$milliSecond.$...
`preg_match_all`函数会返回一个数组,其中 `$match[1]` 包含所有匹配的图片URL。 4. **处理图片URL**: - 遍历匹配到的图片URL,如果URL已经是绝对路径(以'http://'或'https://'开头),则直接保存;否则,将它...
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; ...
preg_match_all('/<img\\ssrc=(http:\/\/.*?)(\\s(.*?)>|>)/i', $result, $matches); foreach ($matches[1] as $value) { echo $value . " \n"; // GrabImage($value, $filename = ""); } } ``` ##### 3. `...
preg_match('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $images); if (!empty($images)) { foreach ($images as $image) { if (strpos($image, 'http') === 0) { $first_image = $images[1]; ...
$img_path = str_replace('../../..', '', $new_file); echo '图片上传成功 ![](' .$img_path. ')'; } else { echo '图片上传失败 '; } } } ?> ``` - **参数获取**:从`$_POST`数组中获取Base64...