php正则提取字符串中的 图片和超链接 保存为txt格式

字符串======================<td><tableborder=0cellpadding=0cellspacing=0><tr><tdalign=ce... 字符串
======================
<td>

<table border=0 cellpadding=0 cellspacing=0>
<tr>
<td align=center>
省略一些~~~~~~~~~~~~~~~~~
<tr>

<td><a href=/news/2009-05-10/468487.htm title=撒旦发公司分公司大概使得法国 target=_blank><img src=/files/images/18079.jpg width=105 height=121 border=0></a></td>
</tr>
省略一些~~~~~~~~~~~~~~~~~

</td>
</tr>
<tr>
<td align=center height=25><a href=/news/2009-05-10/468487.htm title=撒旦发公司分公司大概使得法国 target=_blank>撒旦发公司分公司大概使得法国</a></td>
</tr>
</table>
</td>

<td>
省略一些~~~~~~~~~~~~~~~~~
<td><a href=/news/2009-05-09/898449.htm title=阿道夫三个地方华盛顿国会 target=_blank><img src=/files/images/18068.jpg width=105 height=121 border=0></a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align=center height=25><a href=/news/2009-05-09/898449.htm title=阿道夫三个地方华盛顿国会 target=_blank>阿道夫三个地方华盛顿国会</a></td>
</tr>
</table>
</td>
======================

现在需要获取 类似 如下的部分的内容

<td><a href=/news/2009-05-10/468487.htm title=撒旦发公司分公司大概使得法国 target=_blank><img src=/files/images/18079.jpg width=105 height=121 border=0></a></td>、

里面的 /news/2009-05-10/468487.htm 和 /files/images/18079.jpg 内容

然后 保存为txt格式 文件内容格式如下 连接&&&&&&&&&&图片 供后续处理

/news/2009-05-10/468487.htm&&&&&&&&&&/files/images/18079.jpg
/news/2009-05-09/898449.htm&&&&&&&&&&/files/images/18068.jpg

每行一个。

求给出具体php实例代码。谢谢。我php太差,空有思路。能力不够。谢谢。
展开
 我来答
紫薇参星
科技发烧友

2014-08-31 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3629万
展开全部

php正则提取字符串中的图片和超链接并保存为txt格式文件的程序如下:

此程序提取图片和htm的超链接,并把它们存入1.txt文件.

<?php
$str = "<td>      <table border=0 cellpadding=0 cellspacing=0>        <tr>          <td align=center>      省略一些~~~~~~~~~~~~~~
~~~              <tr>                <td><a href=/news/2009-05-10/468487.htm title=撒旦发公司分公司大概使得法国 target=_blank><img
src=/files/images/18079.jpg width=105 height=121 border=0></a></td>              </tr>      省略一些~~~~~~~~~~~~~~~~~         
</td>        </tr>        <tr>          <td align=center height=25><a href=/news/2009-05-10/468487.htm title=撒旦发公司分公司大概使得法国
target=_blank>撒旦发公司分公司大概使得法国</a></td>        </tr>      </table>    </td>    <td>      省略一些~~~~~~~~~~~~~~~~~ 
              <td><a href=/news/2009-05-09/898449.htm title=阿道夫三个地方华盛顿国会 target=_blank><img src=/files/images/18068.jpg width=105
height=121 border=0></a></td>              </tr>            </table>          </td>        </tr>        <tr>          <td align=center
height=25><a href=/news/2009-05-09/898449.htm title=阿道夫三个地方华盛顿国会 target=_blank>阿道夫三个地方华盛顿国会</a></td>        </tr>     
</table>    </td>"; 
preg_match_all("~<a href=(.*?)\s.+?(<img src=(.*?)\s.+?)?</a>~",$str,$matches); 
$k=fopen("1.txt","a");
for($i=0;$i<count($matches[1]);$i++){
 if($matches[3][$i]==""){
 }else{
  $s=$matches[1][$i]."&&&&&&&&&&".$matches[3][$i]."\r\n";
  fwrite($k,$s);
 }
}
fclose($k);
?>

运行结果:

1.txt文件内容

/news/2009-05-10/468487.htm&&&&&&&&&&/files/images/18079.jpg
/news/2009-05-09/898449.htm&&&&&&&&&&/files/images/18068.jpg

更多追问追答
追问
你好。代码可以正常使用。感谢您的帮助。现在还有一点点小问题。
我需要浏览字符串的时候从后往前提取。也就是最后面的 符合规则的内容 放在第一条,倒序保存到txt中。能否帮我修改一下。感谢。
追答
你把for循环改一下就行了.
把for($i=0;$i=0;$i--){
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2016-11-09
展开全部
<?php
$String = '======================    <td>      <table border=0 cellpadding=0 cellspacing=0>        <tr>          <td align=center>      省略一些~~~~~~~~~~~~~~~~~              <tr>                <td><a href=/news/2009-05-10/468487.htm title=撒旦发公司分公司大概使得法国 target=_blank><img src=/files/images/18079.jpg width=105 height=121 border=0></a></td>              </tr>      省略一些~~~~~~~~~~~~~~~~~          </td>        </tr>        <tr>          <td align=center height=25><a href=/news/2009-05-10/468487.htm title=撒旦发公司分公司大概使得法国 target=_blank>撒旦发公司分公司大概使得法国</a></td>        </tr>      </table>    </td>    <td>      省略一些~~~~~~~~~~~~~~~~~                <td><a href=/news/2009-05-09/898449.htm title=阿道夫三个地方华盛顿国会 target=_blank><img src=/files/images/18068.jpg width=105 height=121 border=0></a></td>              </tr>            </table>          </td>        </tr>        <tr>          <td align=center height=25><a href=/news/2009-05-09/898449.htm title=阿道夫三个地方华盛顿国会 target=_blank>阿道夫三个地方华盛顿国会</a></td>        </tr>      </table>    </td>======================搜索';  //这是你所说的字符串
preg_match_all('/<[a|img]+\s+[href|src]+=([^\s+]*)/is', $String, $Array); //正则匹配并生成数组
$Array = array_unique( $Array[1] );
$T = '';
$i = 0;
foreach( $Array as $value ) {
 $T .= $i % 2  == 0 ? $value : '&&&&&&&&&&' . $value . '
';
    $i++;
}
file_put_contents('1.txt', $T );
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式