PHP preg_replace图像名称

时间:2017-12-02 18:02:43

标签: php preg-replace

我正在尝试使用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 values:

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

$ new_image values:

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 个答案:

答案 0 :(得分:1)

正如php manual所说:

  如果subject参数是,则

preg_replace()返回数组   数组,否则为字符串。

     

如果找到匹配项,新主题将返回,否则   主题返回不变,如果发生错误,则为NULL。

     

所以你需要将preg_replace的结果存储到某个变量中。

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