2013-05-17 45 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. 你有一个放错位置后$签署
相关问题