2013-05-17 2 views
1
<?php 
    $flag=true; 
    if(isset($_POST['sub'])){ 
    if(isset($_POST['text'])){ 
    $a=$_POST["text"]; 
    } else { 
    $a=''; 
    } 
    if(!empty($_POST['msg'])){ 
     $b=$_POST['msg']; 
     $c=strlen($b);} 
    if(isset($_POST['wrd'])){ 
     $d=($_POST["wrd"]); 
    } else { 
     $d=''; 
     }                       
    if(preg_match("[\w\s.,a-zA-Z$a,\.]",$b)){ 
     $flag=false; 
     } 
    if($flag){ 
    $i; 
    for($i=0;$i<=$c;$i++) 
    { 
     $newtext = str_replace($a,$d,$b); 
     echo $newtext; 
     echo "</br>"; 
     break; 
    } 
} else { 
     echo"not found ";} 
} 
    ?> 

이것은 내 단락과 단어 (단락)를 일치시키려는 코드이지만 문제는 여기에 있습니다. 한 줄에 단어 (단락)은 (단락)과 (단락) 같이 쓰여집니다. 그런 이유로 preg_match은이 두 단어를 찾을 수 없으므로 preg_replace도 마찬가지입니다.preg_match 및 preg_replace의 사용자

+1

귀하의 코드 형식 및 변수 이름은 끔찍 서명 잘못 배치 a-zA-Z

  • 별도의 필요가 없습니다 의미합니다. –

  • +2

    그건 읽을 수없는 혼란입니다. 도움이 필요하면 잠재적 인 도우미가 편두통을 퇴치 할 필요가 없도록 코드를 읽을 수 있도록 작성하십시오. – deceze

    답변

    1

    이 잘못된 :

    if(preg_match("[\w\s.,a-zA-Z$a,\.]",$b)) 
    

    정규식 요구는 시작 및 종료 구분자. 그것은해야한다 :

    if(preg_match("/[\w\s.,a-zA-Z$a,\.]/", $b)) 
    

    또한 정규식도 잘못 있습니다. 나는 몇 가지 실수를 볼 수 있습니다 (더있을 myay) : 당신이 점을
  • 을 탈출 할 필요가 없습니다 대괄호 안에

    1. 당신은 어떤 문자
    2. 당신은 \w이 일치합니다 다른 점을 갖고있는 것 같다 그 단어 문자는 따라서 당신은 당신은 A가 후 $