0

別のサイトからカールによって取得されたページの URL を置き換える必要があります。私の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 以外の数字が含まれるまで正常に機能します。これは、preg_replace コマンドを使用しない場合の html の外観です。

<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>

しかし、それは次のようなものでなければなりません。

<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 であり、唯一のものは URL に残す必要があります。

4

1 に答える 1

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>';

    ?>
于 2013-10-02T12:13:52.113 に答える