preg_match和preg_replace的用户

时间:2013-05-17 12:06:05

标签: php preg-replace preg-match

<?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也同样如此。

1 个答案:

答案 0 :(得分:1)

这是不正确的:

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

正则表达式需要开始和结束分隔符。它应该是:

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

另请注意您的正则表达式也不正确。我可以看到一些错误(我的意思更多):

  1. 在方括号内,您不需要转义点
  2. 你似乎有另一个与任何角色匹配的点
  3. 您有\w表示单词字符,因此您不需要单独的a-zA-Z
  4. 你有一个错误的后面的$ sign