2017-12-02 2 views
0

preg_replace를 사용하여 페이지 내의 이미지 이름을 바꾸려고하는데 정규식과 관련하여 누락 된 부분이 있습니다. ,PHP preg_replace 이미지 이름

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

는 당신에게 변수 값을 추측하는 수고를 아끼지하기 : 그래서 여기 https://www.laurentwillen.be/circuits/circuit-autriche/alpbach/

내가 할 것입니다 : 예를 위해서

, 나는 다음과 같은 페이지를 사용합니다

$ old_image 값 :

/alpbach-photo-1/ 
/alpbach-photo-2/ 
/alpbach-photo-3/ 
/alpbach-photo-4/ 
/alpbach-photo-5/ 
/alpbach-photo-6/ 
/alpbach-photo-top/ 
012,351,641 여기서 뭐 $ old_image 높은 주어진 페이지에 대한 표현 new_image $입니다

$의 new_image 값 : preg_replace이다에 대한

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 

카운트가

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