회원로그인
15년 전
텍스트 형태인 숫자를 이미지로 바꾸기 입니다.
카운터 같은곳에서 유용하게 사용할수 있겠죠~?
str_replace()라는 함수가 있습니다.
이름그대로 문자열(string)을 바꾸는(replace)함수인데...
사용법은....
str_replace(바꿀문자,바뀔문자,찾을문자열);
간단한 예를 한번 들어보죠...
<?
$word="a";
$word=str_replace("a","b",$word);
echo $word;
?>
변수 $word에는 a라는 문자열이 들어갔죠...
str_replace("a","b",$word)에서 보면......
a를 b로 바꾸겠다....이겁니다....어디에서? $word라는 문자열에서죠..
결국...$word="b"가 된거죠....이해가시죠?
다음 예제로 볼까요?
<?
$word="12345";
$word=str_replace("1","일",$word);
echo $word;
?>
비슷한 예제 입니다.
$word에는 12345가 들어가있는데.....1을 "일"로 바꾼답니다.
결과는?
네에 "일2345"가 되죠..... ^^쉬운겁니다.
그럼 좀 다르게 해볼까요?
<?
$word="12345";
$word=str_replace("1","<img src=1.gif>",$word);
echo $word;
?>
요건 뭘까요?
위예제랑 같은거죠...그런데 1을 <img src=1.gif>로 바꾼답니다.
결과는?
1.gif라는 이미지가 찍히고 뒤에 2345가 붙을겁니다.
(물론 1.gif라는 이미지가 미리 있어야 겠죠...)
자 그럼......이미지를 만듭니다.
크기야 어찌됐든......0.gif에는 0을 쓰고....1.gif에는 1을 씁니다...
이렇게 0.gif부터 9.gif까지 만들어 저장합니다.
그리고 나서 그냥 위에 했던 방법처럼 0부터 시작해서 gif파일로 바꿔주면 됩니다.......
한번 해보죠 그럼
<?
$word="12345";
$word=str_replace("0","<img src=0.gif>",$word);
$word=str_replace("1","<img src=1.gif>",$word);
$word=str_replace("2","<img src=2.gif>",$word);
$word=str_replace("3","<img src=3.gif>",$word);
$word=str_replace("4","<img src=4.gif>",$word);
$word=str_replace("5","<img src=5.gif>",$word);
$word=str_replace("6","<img src=6.gif>",$word);
$word=str_replace("7","<img src=7.gif>",$word);
$word=str_replace("8","<img src=8.gif>",$word);
$word=str_replace("9","<img src=9.gif>",$word);
echo $word;
?>
자 끝입니다........
0부터 9까지......모조리 검사해서 숫자를 <img>태그로 바꿔주는 거죠;;
근데 이렇게 하면 -_-;;무식하단 소리 듣습니다;;;
우리 배웠던거중에 for문이라고 있었죠....그거 함 써볼까요~^^
<?
$word="12345";
for($i=0;$i<=9;$i++)
{
$word=str_replace("$i","<img src=${i}.gif>",$word);
}
echo $word;
?>
요롷게 간단하게 끝납니다.
for문으로 $i를 0에서 9까지 돌리고.....
str_replace()함수로 샤샤샥 바꿔주는거죠...
요기까지............할라고 그랬는데;;;
요 소스에는 몇가지 문제점이 발생할 수가 있습니다.....^^그래서 알려드릴려고...
먼저 한가지 더 생각해 볼까요?
이미지 파일이 /image라는 폴더에 있습니다.
그럼 치환을....
$word=str_replace("$i","<img src=image/${i}.gif>",$word);
이렇게 하면 되겠죠...
그런데....만약 이미지가 /image2 라는 폴더에 있다면.....
$word=str_replace("$i","<img src=image2/${i}.gif>",$word);
이렇게 하면 될까요?
-_-절대 안됩니다...........
이유는....str_replace에서 image2이라는 폴더 이름까지 1이 <img>태그로 바뀌어 버린다는거죵;;;;;그쵸^^?
잘 따져보세요.....
12345라는 숫자가 0부터 변환을 시작합니다.....
12345 -> 0을 변환 -> 12345
12345 -> 1을 변환 -> <img src=image2/1.gif>2345
<img src=image2/1.gif>2345 -> 2를 변환 -> <img src=image2/1.gif><img src=image2/2.gif>345
이렇게 나가야 정상이지만 그렇지가 않겠죠...
<img src=image2/1.gif>2345 에서의 image2의 2까지 <img src=image2/2.gif>로 바뀌어 버립니다...
때문에 태그가 엉켜서 -_-거기서 끝이죠;;;
소스 개판됩니다......
그래서 이럴경우에는.....임의로 지정을 해주면 좀더 간단합니다.
예를 들면 str_replace("2","<img 2>",$word) 와 같이...임의의 문자로 치환해준다음에 다시 완전한 태그로 치환해줍니다.
str_replace("<img 2>","<img src=image2/2.gif>",$word)
요롷게 말이죠....
아래 완성된 소스입니다.
<?
$word="12345";
for($i=0;$i<=9;$i++)
{
$word=str_replace("$i","<img ${i}>",$word);
}
for($i=0;$i<=9;$i++)
{
$word=str_replace("<img ${i}>","<img src=image2/${i}>",$word);
}
echo $word;
?>
요롷게 한번 더 치환해주면 됩니다.
이런 방법 말고도.....substr()함수를 이용한 방법도 있습니다.
^^더 좋은 방법을 생각해보세요~
추천 : 515
추천
목록