簡體   English   中英

檢查數組元素是否在字符串中

[英]Check if an array element is in a string

之前曾有人問過有關字符串的問題,但是*我所審查的所有問題(不是mod都不會刪除或告訴我們這是重復的問題)實際上沒有回答我的問題。

我有一個登陸頁面,該頁面通過電子郵件框進行了簡單的注冊。 最近,人們一直在通過輸入*,#,$,%等外來字符來濫用它,並且故意使用褻瀆(您總能看出)。 我使用了一系列禁止使用的字符和單詞,如下所示

$banned = array("f**k", "f******", "blah", "*", "#", "$", "%");

我可以肯定地說,有人錯過了一些字符,突然間輸入了很多毫無意義的地址,這是有目的的一次又一次地嘗試以解決問題的方法。 我需要知道如何使用For循環來查找以下內容是否包含數組中的任何禁止使用的單詞

$email = $_POST['email'];

我嘗試使用

$arrlen = count($banned);
for($i=0; $i < $arrlen; $i++) {
    if(stripos($email, $banned[$i] !== false) {
        echo 'Banned word or character!';
    }
    else {
        echo 'Email signed up!';
    }
}

這根本沒有用! 我嘗試了一個舊函數is_str_contain,但是不存在該函數的錯誤。

我也嘗試了正常的strpos,仍然沒有任何樂趣。

我一直在想這個主意,因為我沒有現成的代碼來提供幫助。

以下作品:

$banned = array("badword1", "badword2", "blah", "*", "#", "$", "%");
$_POST['email'] = "emailbadword1@example.com";
$email = $_POST['email'];

    foreach ($banned as $ban) {
        if (stripos($email, $ban) !== FALSE) {
            echo "Match found."; 
            return true;
        }
    }
    echo "No match found.";
    return false;

另外,正如我在評論中提到的那樣; 您應該使用通過電子郵件發送的確認方法(如果尚未這樣做)。 如果該人未確認其電子郵件地址,則“停止新聞”。

這樣嘗試

$banned = array("****", "*******", "blah", "*", "#", "$", "%");

$email = $_POST['email'];
foreach ($email as $em) {
    //if (strstr($em, $banned)) { // mine version
    if (strpos($em, $banned) !== FALSE) { // Yoshi version
        echo "Match found"; 
        return true;
    }
}
echo "Not found!";
return false;

您將需要遍歷每個禁止的單詞,並查看您的電子郵件中是否包含任何禁止的單詞/字符。

$banned = array("****", "*******", "blah", "*", "#", "$", "%");
$email = $_POST['email'];
$banned = false;
for($i=0; $i < count($banned); $i++) {
    if(strrpos($email, $banned[$i]) != FALSE ) {
       $banned = true;
       break;
    }
}
echo $banned ? 'Banned word or character!' : 'Email signed up!'

您可以將stripos用作

foreach ($banned as $v) {
    if (stripos($email,$v) > -1){
        echo 'Banned word or character!';
    }else{
        echo 'Email signed up!';
    }
}

使用正則表達式?

if( !preg_match( '/(\b' . implode( '\b|\b', $banned ) . '\b)/i',
 $_POST['email'] )) {
     echo "Match found"; 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM