如何过滤所有特殊字符(下划线旁边)显示允许和不允许

How to filter all special char (beside underscores ) for display allow and not allow?

本文关键字:显示 不允许 特殊字符 何过滤 过滤 下划线      更新时间:2023-09-26

如何过滤所有特殊字符(下划线旁边)显示允许和不允许?

在我的愿望,我将只允许文本,数字和下划线

但是当我测试这段代码时,我尝试在输入中填充123456abcd&,它将显示

123456abcd& available如何过滤所有特殊字符(下划线旁边)

index . php

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script language="JavaScript">
       var HttPRequest = false;
       function doCallAjax() {
          HttPRequest = false;
          if (window.XMLHttpRequest) { // Mozilla, Safari,...
             HttPRequest = new XMLHttpRequest();
             if (HttPRequest.overrideMimeType) {
                HttPRequest.overrideMimeType('text/html');
             }
          } else if (window.ActiveXObject) { // IE
             try {
                HttPRequest = new ActiveXObject("Msxml2.XMLHTTP");
             } catch (e) {
                try {
                   HttPRequest = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
             }
          } 
          if (!HttPRequest) {
             alert('Cannot create XMLHTTP instance');
             return false;
          }
          var url = 'check_char.php';
          var pmeters = "CUsername=" + encodeURI( document.getElementById("CheckUsername").value);
            HttPRequest.open('POST',url,true);
            HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            HttPRequest.setRequestHeader("Content-length", pmeters.length);
            HttPRequest.setRequestHeader("Connection", "close");
            HttPRequest.send(pmeters);
            HttPRequest.onreadystatechange = function()
            {
                if(HttPRequest.readyState == 3)  // Loading Request
                {
                    document.getElementById("mySpan").innerHTML = "..";
                }
                if(HttPRequest.readyState == 4) // Return Request
                {
                    if(HttPRequest.responseText == 'Y')
                    {
                        window.location = 'AjaxPHPRegister3.php';
                    }
                    else
                    {
                        document.getElementById("mySpan").innerHTML = HttPRequest.responseText;
                    }
                }       
            }
       }
    </script>

        <input size="30" tabindex="1" type="text" name="CheckUsername" id="CheckUsername" onchange="JavaScript:doCallAjax();" 
         value="<?php if(isset($_POST['CheckUsername'])) echo $_POST['CheckUsername']; ?>"> 
        <span id="mySpan"></span>

check_char.php

<?php
$strUsername = $_POST[CUsername];
            $special_char_total = strlen(preg_replace('@[a-z0-9_'-'.]@', '', $strUsername));
            $text_and_number_char_total = strlen(preg_replace('@[^a-z0-9]@', '', $strUsername));
            if ($special_char_total > 0)
                { echo "Username can only contain letters, numbers and underscores (and no spaces!)"; }
            elseif ($text_and_number_char_total < 1)
                { echo "Username must have at lest 1 letter or number"; }
            else
                {
                    echo"$_POST[CUsername] available.";
                }
?>

我要做的是检查允许的字符并计算这些字符。看看下面的操作是否适合你:

<?php
$strUsername = $_POST[CUsername]; 
$strlen =  strlen($strUsername);          
$valid_char_count = strlen(preg_replace('/[^a-zA-Z0-9_]/', '', $strUsername));
if (($valid_char_count < $strlen) || $valid_char_count < 1) {
 if($valid_char_count < $strlen) {
    echo "Username can only contain letters, numbers and underscores (and no spaces!)";
 }
 if ($valid_char_count < 1) { 
    echo "Username must have at lest 1 letter or number"; 
    }
} else {
    echo $strUsername." available";
}
?>