2016-06-16 3 views
-2

Ich habe den folgenden Code:PHP, wie str_replace in einer foreach-Schleife verwenden

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>'; 

Um zu erklären, $element->src gibt die Quelle eines Bildes zurückgeführt, indem eine Seite Crawling-Skript (daher der $html->find). Allerdings muss ich den "~ 100x50" Teil jedes src durch "~ 540x540"

ersetzen Das Problem mit diesem Code ist es funktioniert auf dem ersten Bild, aber dann keine anderen Bilder zurück (sollte es sein mehrere). Was ist der richtige Weg, um str_replace in einer foreach-Schleife zu verwenden?

+1

Setzen Sie ein '{ } 'um deine Schleife. Ohne es ist nur die erste Zeile nach der 'foreach' Teil davon. – ceejayoz

+0

Sind Sie sicher, dass andere Bilder vorhanden sind? Was gibt 'var_dump ($ html-> find ('# portfolioImages img'))' dir? –

Antwort

3

müssen Sie die Klammern in Ordnung bringen Arbeit foreach wie Sie es erwarten:

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>'; 
} 

wenn Sie foreach ohne Klammern verwenden, nur sie die erste Zeile, nachdem er ausführt. So werden die foreach in Ihrem Code, um die erste Zeile viele Male ausgeführt wird, aber die zweite Zeile, nachdem es nur ausgeführt wird einmal

+0

Spot an, vielen Dank –

1

Sie sollten innerhalb des Blocks von foreach setzen Sie Ihren Code

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>'; 
}