开发者

is there a way to check matches in strings in php like the "like" in mysql?

For example i have this string "this is a开发者_C百科 testing string", and I want to test weather the word "string" is in there. How would I do that in PHP?

$theMessage = addslashes(strip_tags($_POST['message']));

$s1='binuang';
$s2='ilad';
$s3='fraud';
$s4='fake';
$s5='ayaw mo ug tuo';
$s6='pangilad';
$s7='bot2';
$s8='bot-bot';
$s9='botbot';
$s10='di tinuod';
$s11='di ni tinuod';

$t1=strpos($theMessage, $s1);
$t2=strpos($theMessage, $s2);
$t3=strpos($theMessage, $s3);
$t4=strpos($theMessage, $s4);
$t5=strpos($theMessage, $s5);
$t6=strpos($theMessage, $s6);
$t7=strpos($theMessage, $s7);
$t8=strpos($theMessage, $s8);
$t9=strpos($theMessage, $s9);
$t10=strpos($theMessage, $s10);
$t11=strpos($theMessage, $s11);

if($t1===true || $t2===true || $t3===true || $t4===true || $t5===true || $t6===true || $t7===true || $t8===true || $t9===true || $t10===true || $t11===true)
{

$sql2=mysql_query("UPDATE property SET valid='1' where p_id='$q'");

}


if it's a direct match, you can do something like:

$stringToTest="this is a testing string";
$findMe="string";


if(strpos($stringToTest,$findMe)!==FALSE){
//something
}

however, because of the case where the string position could be zero, you need to do the !==FALSE method to accurately address all cases


Use strpos: http://php.net/manual/en/function.strpos.php


$haystack = "this is a testing string.";
$needle = "string";
$found = strstr($haystack, $needle);

if($found!==FALSE)
   echo "I found it!";


You can use preg_match(); or strpos();...

strpos(); would be easier, because it won't involve regular expressions, but huh, experiment and see what suits you best!

Okay, lets begin...
1) You would earn a lot by putting all those "bad" words inside an array, like:

$badwords = array('badword1', 'badword2', 'badwords3'); // and so on...

2) Let's run through all the badwords and check for their position in message, with a loop:

$found = 0; // just a simple counter, to populate if a bad word is found..
foreach($badwords as $word){ // for each "bad word" from array, used in loop as "$word"
    if(strpos($theMessage, $word) !== 'false'){ // if we've found the word...
        $found++; // ...plus one for found
    }
}

3) The query part... We check if bad words have been found, and if yes, we show error, otherwise continue with query:

if($found > 0){ // self explanatory...
    echo 'Error, bad words found, you shall not pass!';
}else{
    $query = mysql_query("UPDATE `property` SET `valid` = '1' WHERE `p_id` = '{$q}';"); // {$q} == $q, just formatting preference.
}

4) All together, just for fun and the length of answer:

$theMessage = addslashes(strip_tags($_POST['message']));
$badwords = array('badword1', 'badword2', 'badwords3'); // and so on...

$found = 0; // just a simple counter, to populate if a bad word is found..
foreach($badwords as $word){ // for each "bad word" from array, used in loop as "$word"
    if(strpos($theMessage, $word) !== 'false'){ // if we've found the word...
        $found++; // ...plus one for found
    }
}

if($found > 0){ // self explanatory...
    echo 'Error, bad words found, you shall not pass!';
}else{
    $query = mysql_query("UPDATE `property` SET `valid` = '1' WHERE `p_id` = '{$q}';"); // {$q} == $q, just formatting preference.
}

Have fun!

P.S. I have no idea if this works, can't test at the moment, but I think it should.

http://php.net/manual/en/function.preg-match.php
http://php.net/manual/en/function.strpos.php

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜