preg_replace src img from text

时间:2015-08-17 00:16:23

标签: php regex src

我正在寻找一种方法来改变文本中我所有的img src。

示例:

$var = "Some text Some text Some text <img src=\"test1.jpg\"/> Some text Some text Some text Some text <img src=\"test2.jpg\"/>";

我想将两个src更改为数组中的值:

$array = array("apple.jpg", "banana.jpg");

然后$ var应该如下:

"Some text Some text Some text <img src=\"apple.jpg\"/> Some text Some text Some text Some text <img src=\"banana.jpg\"/>"

我正在使用img的src对每个preg_match进行循环,但我不知道如何修改最终var中的src。

(抱歉我的英文:()

感谢。

编辑:

非常感谢您的回答

如果那时我怎么办,我只会修改以&#34开头的src;数据如:src =&#34;数据等

2 个答案:

答案 0 :(得分:4)

另一种方法:

$var = "Some text Some text Some text <img src=\"test1.jpg\"/> Some text Some text Some text Some text <img src=\"test2.jpg\"/>";
$array = array("apple.jpg", "banana.jpg");

$var = preg_replace_callback('#<img.+?src="([^"]*)".*?/?>#i', function($m) use (&$array) {
    return str_replace($m[1], array_shift($array), $m[0]);
}, $var);

答案 1 :(得分:2)

我会做这样的事情:

$var = "Some text Some text Some text <img src=\"test1.jpg\"/> Some text Some text Some text Some text <img src=\"test2.jpg\"/>";
$replacements = array("apple.jpg", "banana.jpg");
$search_pattern = '/(?<=src=").*?(?=")/';
preg_match_all($search_pattern, $var, $matches);
$var = str_replace($matches[0], $replacements, $var);