我有以下代码:
foreach($html->find('#portfolioImages img') as $element)
$element->src = str_replace("~100x50", "~540x540", $element->src);
echo '<img src="http://www.spotlight.com' . $element->src . '" /><br>';
为了解释,$element->src
返回使用页面抓取脚本返回的图像的来源(因此$html->find
)。但是,我需要更换&#34; ~100x50&#34;每个src的一部分用&#34; ~540x540&#34;
此代码的问题在于它适用于第一张图像,但之后并没有返回任何其他图像(应该有几张)。在foreach循环中使用str_replace的正确方法是什么?
答案 0 :(得分:3)
你需要戴上牙套,以便按照你的期望预先工作:
foreach($html->find('#portfolioImages img') as $element) {
$element->src = str_replace("~100x50", "~540x540", $element->src);
echo '<img src="http://www.spotlight.com' . $element->src . '" /><br>';
}
当你使用没有大括号的foreach时,它只执行它后面的第一行。所以,你的代码中的foreach多次运行第一行,但是它之后的第二行只运行一次
答案 1 :(得分:1)
您应该将代码放在foreach块中
foreach($html->find('#portfolioImages img') as $element) {
$element->src = str_replace("~100x50", "~540x540", $element->src);
echo '<img src="http://www.spotlight.com' . $element->src . '" /><br>';
}