2017-12-02 15 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値:

/alpbach-photo-1/ 
/alpbach-photo-2/ 
/alpbach-photo-3/ 
/alpbach-photo-4/ 
/alpbach-photo-5/ 
/alpbach-photo-6/ 
/alpbach-photo-top/ 
ここで何$ old_imageと高い特定のページのために表すnew_image $です

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

何もどちらかに置き換えされていません。

私は間違っていますか?何か案が?

ありがとうございます! php manualとして

答えて

1

は言う:被験者のパラメータは アレイ、または他の文字列の場合配列を返す

にpreg_replaceを()。一致が見つかった場合

、新しい対象がは、エラーが発生した場合にはそうでない 被写体がが変わらないか、NULLが返され、を返されます。

したがって、preg_replaceの結果を変数に格納する必要があります。

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

おかげしかし対象が配列ではない、それはページ全体を含む文字列です。結果を変数に格納すると、変数は変更なしでコンテンツを出力します。サンプルページをチェックして、ソースコード内でDEBUGを探すと、何も置き換えられていない$ contentの出力が見えます。 – Laurent

関連する問題