2017-12-02 9 views
0

Ich versuche, Bildnamen innerhalb einer Seite zu ersetzen, indem ich preg_replace benutze, aber wahrscheinlich vermisse ich etwas mit regulären Ausdrücken. https://www.laurentwillen.be/circuits/circuit-autriche/alpbach/PHP preg_replace Bildnamen

hier ist also, was ich tue:

Aus Gründen der diesem Beispiel werde ich die folgende Seite verwenden

$media = get_attached_media('image', $metadata["page_id"]); 
foreach ($media as $key=>$value) 
{ 
    $old_image = explode("/",$media[$key]->guid); 
    $old_image = $old_image[sizeof($old_image)-1]; 
    $old_image = explode(".",$old_image); 
    $old_image = "/".$old_image[0]."/"; 
    $new_image = wp_get_attachment_image_src($key,'tablet'); 
    $new_image = explode ("/",$new_image[0]); 
    $new_image = $new_image[sizeof($new_image)-1]; 
    $new_image = explode (".",$new_image); 
    $new_image = "/".$new_image[0]."/"; 
    preg_replace($old_image,$new_image,$content,-1,$count); 
} 

Sie die Variablenwerte zu raten, sich die Mühe zu ersparen, hier ist für die Seite gegeben höher $ old_image und $ new_image repräsentieren was:

$ old_image Werte:

/alpbach-photo-1/ 
/alpbach-photo-2/ 
/alpbach-photo-3/ 
/alpbach-photo-4/ 
/alpbach-photo-5/ 
/alpbach-photo-6/ 
/alpbach-photo-top/ 

$ new_image Werte:

alpbach-photo-1-900x600 
alpbach-photo-2-900x600 
alpbach-photo-3-900x600 
alpbach-photo-4-900x600 
alpbach-photo-5-900x600 
alpbach-photo-6-900x600 
alpbach-photo-top-900x281 

Die Zählung für preg_replace gibt

9 
0 
9 
0 
9 
0 
0 

Aber am Ende wird nichts ersetzt.

Wenn ich versuche, dies manuell:

preg_replace("/alpbach-photo-3/","/alpbach-photo-1/",$content,-1,$count); 

Nichts entweder ersetzt.

Was mache ich falsch? Irgendeine Idee?

Danke!

Antwort

1

Wie php manual sagt:

preg_replace() kehrt ein Array, wenn das Subjekt-Parameter ist ein Array oder ein String aus anderen Gründen.

Wenn Übereinstimmungen gefunden werden, wird das neue Thema seiner zurückgegeben, andernfalls Thema zurückgegeben wird unverändert oder NULL, wenn ein Fehler aufgetreten ist.

Sie müssen also das Ergebnis von preg_replace in einer Variablen speichern.

$result = preg_replace($old_image,$new_image,$content,-1,$count); 
+0

Danke, aber das Thema ist kein Array, es ist eine Zeichenfolge, die die ganze Seite enthält. Wenn ich das Ergebnis in einer Variablen ablege, gibt die Variable den Inhalt ohne Änderung aus. Sie können auf der Beispielseite im Quellcode nach DEBUG suchen, Sie sehen die Ausgabe von $ content, wo nichts ersetzt wurde. – Laurent