2013-05-17 80 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_replacepreg_match和preg_replace的用戶

+1

你的代碼格式化和變量的命名是可怕的事情。 –

+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. 你似乎有另一點,將任意字符
  3. 你有\w匹配指字的字符,因此你不需要單獨a-zA-Z
  4. 你有一個放錯位置後$簽署
相關問題