php替换字符串并读取完整字符串

时间:2014-02-19 09:54:47

标签: php

我正在努力实现这一目标。我有很多看起来像这样的HTML(例如)。

<div>
    <img src="http://firstsite.com/path/to/img/main.jpg" style="width: 500px; height: 400px;" />
</div>

现在我尝试制作一个自动将图像路径更改为另一个网站的PHP,但我也想下载图像并将它们放入相同的文件夹结构中。到目前为止,我做到了这一点:

    $input = "c:/wamp/www/primo/input12";
    $output = "c:/wamp/www/primo/output12";


    $handle  = opendir($input);
    while (($file = readdir($handle)) !== false) {
        if($file != '.' && $file != '..') {

            $data = file_get_contents($input . "/" . $file);

            $data = str_replace("http://firstsite.com/", "http://secondsite.com", $data);

            file_put_contents($output . "/" . $file, $data);

        }
    }
    closedir($handle);

这改变了路径,但现在我需要以某种方式在我的示例中以变量的完整路径http://firstsite.com/path/to/img/main.jpg进入下载图像。

有没有办法在替换只是路径开头的http://firstsite.com/时获取图像的完整路径?

先谢谢你,丹尼尔!

2 个答案:

答案 0 :(得分:1)

怎么样:

preg_match_all('/(http:\/\/firstsite\.com\/[^\s]*)/', $data, $matches);

答案 1 :(得分:1)

仅获取图片:

$data = file_get_contents($input . "/" . $file);

preg_match_all('/\<img.*src=\"(.+?)\"/s', $data, $matches);
//go through the match array and download your files

$data = str_replace("http://firstsite.com/", "http://secondsite.com", $data);
file_put_contents($output . "/" . $file, $data);

获取所有路径:

$data = file_get_contents($input . "/" . $file);

preg_match_all('/http\:\/\/firstsite\.com([^\s]+?)/s', $data, $matches);
//go through the match array and download your files

$data = str_replace("http://firstsite.com/", "http://secondsite.com", $data);
file_put_contents($output . "/" . $file, $data);