我需要替换curl从其他网站获取的页面中的网址。我的php卷曲代码是;
<?php
$ch = curl_init ("http://www.externalwebsite.com/index.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($ch);
preg_match('#<div class="headline"[^>]*>(.+?)</div>#is', $page, $matches);
foreach ($matches as &$match) {
$match = $match;
}
$html=$matches[1];
$html = preg_replace('~a href="([a-z,.\-]*)~si', '"', $html); //NEED TO CHANGE THIS
echo $html;
?>
此代码正常工作,直到url具有除id之外的任何数字字符。这就是html在没有任何preg_replace命令的情况下的样子。
<div class="swiper-slide red-slide">
<div class="title"><a href="http://www.externalwebsite.com/title-of-the-3-page-192345.htm" class="image">
<img src="http://www.externalwebsite.com/d/news/94406.jpg"/></a></div></div>
如果我使用上面的preg_replace命令,html看起来像;
<div class="swiper-slide red-slide">
<div class="title"><a href="http://www.mywebsite.com/read_curl.php?id=3-page-192345" class="image">
<img src="http://www.externalwebsite.com/d/news/94406.jpg"/></a></div></div>
Bu必须是这样的;
<div class="swiper-slide red-slide">
<div class="title"><a href="http://www.mywebsite.com/read_curl.php?id=192345" class="image">
<img src="http://www.externalwebsite.com/d/news/94406.jpg"/></a></div></div>
只有ID必须保留,所有其他内容必须删除。请有人帮帮我吗?
更新:页面标题动态变化,最后6位是id,唯一必须保留在网址中。
答案 0 :(得分:0)
用户PHP正则表达式:
/\d{6}/
结果:
<?php
$str='<div class="swiper-slide red-slide">
<div class="title"><a href="http://www.externalwebsite.com/title-of-the-3-page-192345.htm" class="image">
<img src="http://www.externalwebsite.com/d/news/94406.jpg"/></a></div></div>';
preg_match("/\d{6}/", $str, $matches);
$st = $matches[0];
echo '<div class="swiper-slide red-slide">
<div class="title"><a href="http://www.externalwebsite.com/read_curl?id='.$st.'" class="image">
<img src="http://www.externalwebsite.com/d/news/94406.jpg"/></a></div></div>';
?>