Home > Article > Backend Development > PHP uses strpos function to block keyword programs_PHP tutorial
When we make message boards, we often need to block keywords. Below I will introduce how to use txt to save the keywords to be blocked, and then filter them based on the data submitted by the user.
Look at the strpos function first
The strpos() function returns the position of the first occurrence of a string in another string.
If the string is not found, return false.
Grammar
strpos(string,find,start) parameter description
string required. Specifies the string to be searched for.
find required. Specifies the characters to search for.
start is optional. Specifies the location from which to start the search.
Tips and Notes
Note: This function is case sensitive. For case-insensitive searches, use the stripos() function.
Example
The code is as follows | Copy code | ||||
|
2. PHP reads the keyword text and stores it in an array
3. Traverse the keyword array and use the strpos function one by one to see if there are keywords in the content. If there are keywords, return true, if not, return false
代码如下 | 复制代码 |
/**
|
The code is as follows | Copy code |
/** * Use strpos function to filter keywords in PHP * Qiongtai Blog */ // Keyword filter function function keyWordCheck($content){ // Remove white space $content = trim($content); //Read keyword text $content = @file_get_contents('keyWords.txt'); // Convert to array $arr = explode("n", $content); // Traversal detection for($i=0,$k=count($arr);$i<$k;$i++){ // If the array element is empty, skip this loop If($arr[$i]==''){ Continue; } // If a keyword is detected, return the matching keyword and terminate the operation If(@strpos($str,$arr[$i])!==false){ //$i=$k; return $arr[$i]; } // Return false if no keyword is detected Return false; } $content = 'Here is the text content to be published. . . '; // Filter keywords $keyWord = keyWordCheck($content); // Determine whether the keyword exists if($keyWord){ echo 'The content you posted contains keywords'.$keyWord; }else{ echo 'Congratulations! By keyword detection'; // You can perform the operation of the database to complete the release action. } |
After writing the code, I deliberately wrote a keyword content in the variable $content, and then ran it and found that no keyword was detected. The execution result was passed, and other prohibited keywords were passed.
Depressed, I started to judge if there was something wrong
Encoding problem? Immediately open the keyWord.txt file again with Notepad, and then save it in UTF-8 format. The result still didn't work.
Didn't get the text content of keyWord.txt? Immediately print_r() found that it was read normally and converted into an array line by line.
So, I declared the keyword array directly in the program
The code is as follows | Copy code | ||||
|
If you declare a keyword array in PHP, it will work, but if you read a text file, it will not work. What the hell?
When I was puzzled, I thought, could it be caused by the content read from the text file having spaces or line breaks not being filtered? So I added a trim function
After adding the trim() function to filter out the blanks, the test passed. It turned out that the problem was here after messing around for a long time.
The code is as follows
|
Copy code | ||||
/**
// If the array element is empty, skip this loop If($arr[$i]==''){ Continue;