

以下のようなhtmlがあり、その中のhrefの値を全て、$urlに置換するにはどのような処理を行えばいいでしょうか？

詳しい方、ご教示ください。宜しくお願い致します。

[code]

    <div class="article_image"><a href="http://www.amazon.co.jp/PENTAX-%E3%83%9F%E3%83%A9%E3%83%BC%E3%83%AC%E3%82%B9%E4%B8%80%E7%9C%BC-%E3%82%BA%E3%83%BC%E3%83%A0%E3%83%AC%E3%83%B3%E3%82%BA%E3%82%AD%E3%83%83%E3%83%88-STANDARD-06239/dp/B00MFD07OO/ref=sr_1_1/375-7893352-7638937?ie=UTF8&qid=1457086894&sr=8-1&keywords=Q-S1"><img class="article_img" src="http://ecx.images-amazon.com/images/I/41Rs3BwRg2L._AA160_.jpg" /></a></div><div class="article_image_text article_product_info"><p class="article_product_brand"><a href="http://www.amazon.co.jp/PENTAX-%E3%83%9F%E3%83%A9%E3%83%BC%E3%83%AC%E3%82%B9%E4%B8%80%E7%9C%BC-%E3%82%BA%E3%83%BC%E3%83%A0%E3%83%AC%E3%83%B3%E3%82%BA%E3%82%AD%E3%83%83%E3%83%88-STANDARD-06239/dp/B00MFD07OO/ref=sr_1_1/375-7893352-7638937?ie=UTF8&qid=1457086894&sr=8-1&keywords=Q-S1">PENTAX ミラーレス一眼 Q-S1 ズームレンズキット [標準ズーム 02 STANDARD ZOOM] ゴールド 06239</a></p><p class="article_product_price">￥ 28,205 </p><div class="btn_item_area clearfix"><a href="http://www.amazon.co.jp/PENTAX-%E3%83%9F%E3%83%A9%E3%83%BC%E3%83%AC%E3%82%B9%E4%B8%80%E7%9C%BC-%E3%82%BA%E3%83%BC%E3%83%A0%E3%83%AC%E3%83%B3%E3%82%BA%E3%82%AD%E3%83%83%E3%83%88-STANDARD-06239/dp/B00MFD07OO/ref=sr_1_1/375-7893352-7638937?ie=UTF8&qid=1457086894&sr=8-1&keywords=Q-S1" target="_blank" class="btn_item btn_shop">サイトで購入</a></div>
    
[/code]


CC BY-SA 3.0
2016-04-12T04:54:53.173
23937
2016-05-23T00:47:17.903
8619
question
php html 正規表現
PHPでhrefの値の置換


HTMLのタグが文字列であるということですか？  
`$html_code`にタグが格納されているとして下記のように置き換えればいいと思います。

[code]

    $url = '置き換えたい文字列';
    $html_code = '<div class="article_image"><a href="http://www.amazon.co.jp/～中略～&keywords=Q-S1" target="_blank" class="btn_item btn_shop">サイトで購入</a></div>';
    $output = preg_replace("/(<a href=\").*?(\".*?>)/", "$1$url$2", $html_code);
    echo $output;
    
[/code]


CC BY-SA 3.0
2016-04-12T07:27:12.283
23944
2016-04-18T09:41:14.523
2016-04-18T09:41:14.523
23937
answer


変数`$url`でhrefの中身を置換すればよいのですか。

[code]

    <?php
    
    // your code goes here
    
    $html = '<div class="article_image"><a title="test" href=\'http://www.amazon.co.jp/PENTAX-%E3%83%9F%E3%83%A9%E3%83%BC%E3%83%AC%E3%82%B9%E4%B8%80%E7%9C%BC-%E3%82%BA%E3%83%BC%E3%83%A0%E3%83%AC%E3%83%B3%E3%82%BA%E3%82%AD%E3%83%83%E3%83%88-STANDARD-06239/dp/B00MFD07OO/ref=sr_1_1/375-7893352-7638937?ie=UTF8&qid=1457086894&sr=8-1&keywords=Q-S1\'><img class="article_img" src="http://ecx.images-amazon.com/images/I/41Rs3BwRg2L._AA160_.jpg" /></a></div><div class="article_image_text article_product_info"><p class="article_product_brand"><a href="http://www.amazon.co.jp/PENTAX-%E3%83%9F%E3%83%A9%E3%83%BC%E3%83%AC%E3%82%B9%E4%B8%80%E7%9C%BC-%E3%82%BA%E3%83%BC%E3%83%A0%E3%83%AC%E3%83%B3%E3%82%BA%E3%82%AD%E3%83%83%E3%83%88-STANDARD-06239/dp/B00MFD07OO/ref=sr_1_1/375-7893352-7638937?ie=UTF8&qid=1457086894&sr=8-1&keywords=Q-S1">PENTAX ミラーレス一眼 Q-S1 ズームレンズキット [標準ズーム 02 STANDARD ZOOM] ゴールド 06239</a></p><p class="article_product_price">￥ 28,205 </p><div class="btn_item_area clearfix"><a href="http://www.amazon.co.jp/PENTAX-%E3%83%9F%E3%83%A9%E3%83%BC%E3%83%AC%E3%82%B9%E4%B8%80%E7%9C%BC-%E3%82%BA%E3%83%BC%E3%83%A0%E3%83%AC%E3%83%B3%E3%82%BA%E3%82%AD%E3%83%83%E3%83%88-STANDARD-06239/dp/B00MFD07OO/ref=sr_1_1/375-7893352-7638937?ie=UTF8&qid=1457086894&sr=8-1&keywords=Q-S1" target="_blank" class="btn_item btn_shop">サイトで購入</a></div>';
    $url = 'http://example.com/';
    
    $result = preg_replace(
        // regexp
        '/(<a.*?href=(?:\'|"))([^\'"]+?)((?:\'|").*?>)/',
        // replacement
        '$1' . $url . '$3',
        // input
        $html
    );
    
    echo $result;
    
[/code]

<http://sandbox.onlinephpfunctions.com/code/6ad18c9538f82e45fda5c5627ece4df188edb33a>

hrefの中身ごとに置換処理をカスタマイズする場合は[preg_replace_callback](http://php.net/manual/ja/function.preg-
replace-callback.php)を検討してみてください。  
`$1`についてはphpのドキュメントあるいは<https://stackoverflow.com/questions/2888417/>などをご参照ください。


CC BY-SA 3.0
2016-04-19T14:17:50.837
24159
2016-04-19T14:17:50.837
2017-05-23T12:38:55.250
-1
23937
answer