再想一下,先看看这个能不能用
<?
$A="请您对您的言行负责,遵守中华人民共和国有关法律、法规,尊重网上道德";
$B="·¨&Acirc;&Eacute;";
$C="×&ntilde;&Ecirc;&Oslash;";
$D="·¨&sup1;&aelig;";
if (strpos($A,$B) && strpos($A,$C) && strpos($A,$D)) {
print "okkkkkkkkkk";
} else {
print "noooooooooooo";
}$A="请您对您的言行负责,遵守中华人民共和国有关法律、";
if (strpos($A,$B) && strpos($A,$C) && strpos($A,$D)) {
print "okkkkkkkkkk";
} else {
print "noooooooooooo";
}

解决方案 »

  1.   

    谢谢两位兄弟,但我想用正则表达式,而不是用strpos呀。再看看其他兄弟有什么高见...
      

  2.   

    <?php
    $A="请您对您的言行负责,遵守中华人民共和国有关法律、法规,尊重网上道德";
    $ar = array("法律","遵守","法规");
    $p = "/(?:".join("|",$ar).")/";
    echo "$p<br>";
    preg_match_all($p,$A,$regs);
    $o = array_diff($ar,$regs[0]);
    if(count($o) == 0)
      echo "ok";
    ?>
    当然,你若连出现的次序也需限定的话可以
    eregi("法律.*遵守.*法规",$A)
    因为正则表达式的各成分件就是“与”关系
      

  3.   

    再请问唠叨兄,在mysql查询中用正则表达式是如何实现?
      

  4.   

    expr REGEXP pat 
      
    expr RLIKE pat 
    执行一个字符串表达式expr对一个模式pat的模式匹配。模式可以是一个扩充的正则表达式。见MySQL 正则表达式句法的 H 描述.如果expr匹配pat,返回1,否则返回0。RLIKE是REGEXP的一个同义词,提供了与mSQL的兼容性。注意:因为MySQL在字符串中使用C转义语法(例如,“\n”), 你必须在你的REGEXP字符串重复任何“\”。在MySQL3.23.4中,REGEXP对于正常的(不是二进制)字符串是忽略大小写。 
    mysql> select 'Monty!' REGEXP 'm%y%%';
            -> 0
    mysql> select 'Monty!' REGEXP '.*';
            -> 1
    mysql> select 'new*\n*line' REGEXP 'new\\*.\\*line';
            -> 1
    mysql> select "a" REGEXP "A", "a" REGEXP BINARY "A";
            -> 1  0当决定一个字符的类型时,REGEXP和RLIKE使用当前的字符集(缺省为ISO-8859-1 Latin1)。 
    expr NOT REGEXP pat 
      
    expr NOT RLIKE pat 
    与NOT (expr REGEXP pat)相同。 ------
    结帐算分点击右下红底白字的管理
      

  5.   

    上述我表达得不清楚,请见谅。
    我想问的是如何在mysql中实现像上述问题的多字符串正则“与”查询。
    谢谢唠叨兄。
      

  6.   

    Up
    再请教如何在mysql中用regexp实现像上述问题的多字符串正则“与”查询。