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

여기서 막혔어요 도와주세요~

문자열 치환함수인데요....
 
 
아래의 소스대로 하면,
 
mildly가 입력되면 이상il복부 가 출력됩니다. 순차적으로 일치하는 단어만을 출력하게 되는데요
 
이를 정확하게 일치하는 단어만 출력되게 하는 방법이 있을까요? mildly를 입력하면 "경미하게" 출력되게끔요
 
 
 
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

function bad_Word($str)
 {     
$str=str_replace("m","이상",$str);
$str=str_replace("mil","경",$str);
$str=str_replace("dly","복부",$str);
$str=str_replace("ased","외전",$str);
$str=str_replace("localized","후방 관절",$str);
$str=str_replace("increased","증가된",$str);
$str=str_replace("mildly","경미하게",$str);

   
 return $str;
 }   

?>
 
 
 
 
 
 
 
아래는 내용출력부분 입니다
 
 
<?
                   //<!-- 단어변환-->
     if ($member[mb_level] >= "12"){echo "<span class='ct lh'>".$view[content]."</span>";}
      else{
      
      
      $content = bad_Word($view[content]);
      echo "<span id=\"writeContents\">".$content."</span>";
       }
        ?>

댓글 작성

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

로그인하기

댓글 8개

$str=str_replace("mildly","경미하게",$str);
$str=str_replace("increased","증가된",$str);
$str=str_replace("localized","후방 관절",$str);
$str=str_replace("ased","외전",$str);
$str=str_replace("dly","복부",$str);
$str=str_replace("mil","경",$str);
$str=str_replace("m","이상",$str);


이렇게 반대로 하면 되지 않을까요 ^^;
치환하는 단어가 2만개입니다 ㅜㅡ
정확히 일치하는 문자열만 출력하는 방법이 없을까요?
글자길이로 소팅후 치환순서를 정한후 str_replace 에 array 인자로 넣어주심댈듯
function Word($str) {
$a_res = array("m"=>"이상", "mil"=>"경", "dly"=>"복부", "ased"=>"외전", "localized"=>"후방 관절", "increased"=>"증가된", "mildly"=>"경미하게");

return $a_res[$str];
}
치환 문자열과, 치환대상 문자열을 배열로 만들어서 저장하면 됩니다.
stop word(아마 공백이 되겠죠.) 단위로 나눠서 변환을 하면 됩니다.
연속되어 있는 문자는 위에서 얘기한것쩌럼 긴쪽부터 변환해야 합니다.
이렇게 해도 안돼요 ㅠㅠ

function bad_Word($str)
{
$a_res = array('m' =>'이상','mil'=>'경','dly'=>'복부','ased'=>'외전','localized'=>'후방 관절','increased'=>'증가된','mildly'=>'경미하게');
$str = str_replace($a_res, $str);
return $str;
}
제가 잘못이해했는지 모르겠습니다만, 정규표현식으로 하면 쉽게되지 않을까요??
답변 감사합니다^^

게시글 목록

번호 제목
15661
15657
3688
15650
15648
15647
15642
3676
29958
15639
15635
15632
3672
15630
15629
15628
15625
15624
15621
15613
3669
29953
15605
15604
15602
15601
15600
3666
3663
15596
29952
3662
15592
3655
29944
3648
15591
15589
29937
3644
3641
15586
15585
29936
15583
15578
15575
15572
15567
15563
24338
15560
15556
26168
29935
15552
3626
3617
3605
3596
15549
15547
15546
29933
26167
26166
26165
26164
26163
26161
26160
26152
26149
26148
26147
26146
26145
26141
26138
26134
15539
3590
29931
3583
3581
3578
15537
15535
29926
15524
29920
3560
15521
3557
29919
15517
29914
15506
29910
29909