2017-12-02 161 views
0

我想通過使用preg_replace替換頁面內的圖像名稱,但我可能缺少正則表達式的東西。PHP preg_replace圖像名稱

對於這個例子的目的,我將使用以下頁面: https://www.laurentwillen.be/circuits/circuit-autriche/alpbach/

因此,這裏是我做的:

$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); 
} 

要饒你猜變量值的麻煩,這裏是$ old_image和$ new_image代表給予更高的頁面:

$ old_image值:

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

$ new_image值:

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 

的計數的preg_replace返回

9 
0 
9 
0 
9 
0 
0 

但最終,沒有被替換。

如果我手動這樣試試:

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

沒有被替換無論是。

我在做什麼錯?任何想法?

謝謝!

回答

1

php manual如說:

的preg_replace()返回如果受試者參數是 陣列的陣列,或者一個字符串否則。

如果找到匹配,新的主題將是返回,否則 主題是返回不變或NULL,如果發生錯誤。

因此,您需要將preg_replace的結果存儲到某個變量中。

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

謝謝,但對象不是一個數組,它包含整個頁面的字符串。如果我將結果存儲在變量中,則變量輸出內容時不變。您可以在示例頁面上的源代碼中查找DEBUG,您將看到$ content的輸出,其中沒有任何內容被替換。 – Laurent