이미지 url주소값만 변경하기 질문드립니다.

이미지 url주소값만 변경하기 질문드립니다.

QA

이미지 url주소값만 변경하기 질문드립니다.

본문

$aaa = '<img border="0" src="http://aaa.com/0.jpg" width="100" height="100">
<br><img border="0" src="http://aaa.com/1.jpg" width="100" height="100">
<br><img border="0" src="http://aaa.com/2.jpg" width="100" height="100">'; 

 

preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $aaa, $match); 

// src 값만 추출하기 
$imgurl = $match[1]; 

 

위와 같이 $aaa에서 이미지 주소값만 추출했을때

아래의 $bbb에 내용과 다른 태그는 그대로두고 이미지 주소값만 순서대로 바꾸려고 합니다.

 

어떻게 하면되는지 아시분 도와주시면 감사하겠습니다.


$bbb = '<img border="0" src="위에서 추출한 이미주소 첫번째" width="100" height="100"> 
<br>안녕하세요~ 
<br><br>날씨가 많이 춥네요 
<br><img border="0" src="위에서 추출한 이미주소 두번째" width="100" height="100"> 
<br>감기조심하세요 
<br><img border="0" src="위에서 추출한 이미주소 세번째" width="100" height="100">';

이 질문에 댓글 쓰기 :

답변 2


str_replace("위에서 추출한 이미주소 첫번째", $imgurl[0], $bbb);
str_replace("위에서 추출한 이미주소 두번째", $imgurl[1], $bbb);
str_replace("위에서 추출한 이미주소 세번째", $imgurl[2], $bbb);

베원님 답글 감사합니다.
이미지가 3개만 있는게 아니고 1개 일수도 있고 여러개 일수도 있거든요.
할때마다 이미지 수는 달라져요.

그리고 위에서 추출한 이미주소 첫번째 이 부분도 항상 값이 달라요

그러땐 어떻게 하면 될까요?

테스트는 안 해본 코드인데 이런 맥락으로 하시면 될 것 같습니다.


for($i=0; preg_match("/<img border=\"0\" src=\"(.*)\"", "<img src=\"".$imgurl[$i]."\" border=\"0\"", $bbb), $i++);

하나의 img태그가 여러번 검사되는 것을 막기 위해서 border와 src의 위치를 바꾸었습니다.

코드에 에러가 있었네요.


for($i=0; preg_match("/<img border=\"0\" src=\"(.*)\"/", "<img src=\"".$imgurl[$i]."\" border=\"0\"", $bbb), $i++);

이걸로 해보세요. 계속 안되시면 어떤 에러가 나는지 첨부해주시기 바랍니다.

늦은밤 정말 감사합니다.
알려주신 코드는 에러 안납니다.
죄송하지만 한번만 더 봐주시면 안될까요?

$aaa = '<img border="0" src="http://aaa.com/0.jpg" width="100" height="100">
<br><img border="0" src="http://aaa.com/1.jpg" width="100" height="100">
<br><img border="0" src="http://aaa.com/2.jpg" width="100" height="100">';

preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $aaa, $match);

// src 값만 추출하기
$imgurl = $match[1];

$bbb = '<img border="0" src="위에서 추출한 이미주소 첫번째" width="100" height="100">
<br>안녕하세요~
<br><br>날씨가 많이 춥네요
<br><img border="0" src="위에서 추출한 이미주소 두번째" width="100" height="100">
<br>감기조심하세요
<br><img border="0" src="위에서 추출한 이미주소 세번째" width="100" height="100">';

for($i=0; preg_match("/<img border=\"0\" src=\"(.*)\"/", "<img src=\"".$imgurl[$i]."\" border=\"0\"", $bbb); $i++);


echo $bbb;

이렇게 하는게 아니간요? ㅠㅠ

테스트를 안 해보고 짰더니 코드가 개판이었네요.


for($i=0; $i<count($imgurl); $i++) {
	$bbb = preg_replace("/<img border=\"0\" src=\"(.*)\" width/", "<img src=\"".$imgurl[$i]."\" border=\"0\" width", $bbb, 1);
}

이렇게 수정해보세요. 테스트 결과 잘 작동합니다.

http://rido.tistory.com/entry/jquery-%ED%8A%B9%EC%A0%95%EB%8F%84%EB%A9%94%EC%9D%B8%EC%9D%98-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%A7%81%ED%81%AC%EB%A5%BC-%EB%B3%80%EA%B2%BD?category=411630

 

예전 비슷한 경험이 있어서 만들어둔 jquey 입니다 참고하세요

 

우와.. 지금보니 소스 겁나 허접스럽네요 정말 참고만 하세요

답변을 작성하시기 전에 로그인 해주세요.
전체 123,641 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT