테스트 사이트 - 개발 중인 베타 버전입니다

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

열공중 7년 전 조회 3,805

$aaa = 'http://aaa.com/0.jpg" target="_blank">http://aaa.com/0.jpg" width="100" height="100"> http://aaa.com/1.jpg" target="_blank">http://aaa.com/1.jpg" width="100" height="100"> http://aaa.com/2.jpg" target="_blank">http://aaa.com/2.jpg" width="100" height="100">'; 

 

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

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

 

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

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

 

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

$bbb = '  안녕하세요~  날씨가 많이 춥네요    감기조심하세요  ';

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
베원
7년 전

</p>

<p>str_replace("위에서 추출한 이미주소 첫번째", $imgurl[0], $bbb);</p>

<p>str_replace("위에서 추출한 이미주소 두번째", $imgurl[1], $bbb);</p>

<p>str_replace("위에서 추출한 이미주소 세번째", $imgurl[2], $bbb);</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 10개

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

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

그러땐 어떻게 하면 될까요?
베원
7년 전
@열공중 테스트는 안 해본 코드인데 이런 맥락으로 하시면 될 것 같습니다.
[code]
for($i=0; preg_match("/<img border=\"0\" src=\"(.*)\"", "<img src=\"".$imgurl[$i]."\" border=\"0\"", $bbb), $i++);
[/code]
하나의 img태그가 여러번 검사되는 것을 막기 위해서 border와 src의 위치를 바꾸었습니다.
열공중
7년 전
베원님 알려주신걸 이리저리 해보는데 제가 초보라 적용법을 몰라서인지 에러만나네요~ㅠㅠ
베원
7년 전
코드에 에러가 있었네요.
[code]
for($i=0; preg_match("/<img border=\"0\" src=\"(.*)\"/", "<img src=\"".$imgurl[$i]."\" border=\"0\"", $bbb), $i++);
[/code]
이걸로 해보세요. 계속 안되시면 어떤 에러가 나는지 첨부해주시기 바랍니다.
열공중
7년 전
알려주신 소스줄이 아래처럼에러나네요
Parse error: syntax error, unexpected ')', expecting ';' in /home/zzang/public_html/imgur2.php on line 18
베원
7년 전
아이고 죄송합니다.
[code]
for($i=0; preg_match("/<img border=\"0\" src=\"(.*)\"/", "<img src=\"".$imgurl[$i]."\" border=\"0\"", $bbb); $i++);
[/code]
열공중
7년 전
늦은밤 정말 감사합니다.
알려주신 코드는 에러 안납니다.
죄송하지만 한번만 더 봐주시면 안될까요?

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

이렇게 하는게 아니간요? ㅠㅠ
베원
7년 전
@열공중 테스트를 안 해보고 짰더니 코드가 개판이었네요.
[code]
for($i=0; $i<count($imgurl); $i++) {
$bbb = preg_replace("/<img border=\"0\" src=\"(.*)\" width/", "<img src=\"".$imgurl[$i]."\" border=\"0\" width", $bbb, 1);
}
[/code]
이렇게 수정해보세요. 테스트 결과 잘 작동합니다.
열공중
7년 전
베원님 정말정말 감사합니다^^
제가 원하던대로 완벽하게 되네요.
늦은밤 귀한 시간내주셔서 정말 감사합니다.
좋은밤 되세요^^
베원
7년 전
@열공중 좋은 밤 되세요~

댓글을 작성하려면 로그인이 필요합니다.

답변에 대한 댓글 1개

열공중
7년 전
Rido 관심가져주시고 알려주셔서 감사합니다.
제가 워낙에 초보라 알려주신것도 쉽진 않을듯요^^

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인