如何修复php中的echo link url数组?

时间:2011-12-15 08:49:46

标签: php

我有一个代码示例:

include 'simple_html_dom.php';
    // convert link url
    function foo($uri) {
        $url = parse_url($uri);
        $paths = explode('/', $url['path']);
        return sprintf("%s://%s/%s", $url['scheme'], 'localhost/test/get_image/images', end($paths));
    }
    $str = '<img src="http://www.somedomain.com/somepic.jpg" />
    <img src="http://www.microsoft.com/somepic.jpg" />';
    $html = new simple_html_dom();
    $html->load($str);
    // remove all image
    $arr_img = array();
    foreach($html->find('img') as $element) {
        $arr_img[] = $element->src;
    $str_rep = str_replace($element->src, foo($element->src), $str);
    }
    echo $str_rep;
  

输出:

<img src="http://www.somedomain.com/somepic.jpg">
<img src="http://localhost/test/get_image/images/somepic.jpg">

无法获取链接时出现错误“http://www.somedomain.com/somepic.jpg”未转换为“http://localhost/test/get_image/images/somepic.jpg” 如何解决?

1 个答案:

答案 0 :(得分:0)

你在foreach循环中为$str_rep分配了一些东西,但是使用了它之外的变量:你只处理最后一个匹配。

尝试这样的事情:

foreach($html->find('img') as $element) {
    $arr_img[] = $element->src;
    $str_rep = str_replace($element->src, foo($element->src), $str);
    echo $str_rep;
}