PHP自学笔记14--判断输入中符合条件的字符数

PHP持续学习中。

判断字符数其实很简单,用strlen()就可以了。

这里要说的是使用正则表达式,符合条件的字符数。换行啦(换行算两个字符),空白符啦,全都给你算上。

 

代码如下:

1,文件1,用于输入

<?php 
$html=<<<start1
<html>
<head>
<script type="text/javascript">
function check(){
    if(document.myform.text1.value==""){
        alert("please input content");
        return false;
    }
    document.myform.submit();
}
</script>
</head>
<body>
<form name="myform" action="test014_check.php" method="post">
  content:<input type="text" name="text1" value=""/>
  <br/>
  <input type="button" onclick="check()" value="check content"/>
</form>
</body>
</html>
start1;

echo $html;

?>

2,文件2,名为test014_check.php,用于判断文件1的输入是否大于10个字符

<?php 
echo "<pre>";
if(!empty($_POST['text1'])){    
    $str=$_POST['text1'];
    $match="";
    preg_match_all("/./us", $str,$match);
    print_r($match);
    print_r($match[0]);
    
    $num=count($match[0]);
    
    //echo "<br/>".$num;
    
    if($num<=10){
        echo "<script>alert('inputted is litte than 10');</script>";
    }else{
        echo "<script>alert('publish success');</script>";        
    }
}
echo "</pre>";
?>

这里比较有意思的是preg_match_all函数,匹配出来的东西放到$match二维数组里。

当然啦,这大炮打蚊子,preg_match_all可不是用来算字符长度的,而是用来匹配的,

所以这个例子是算匹配后的字符数。

 

比如文件1中输入 0123456789a,则输入如下。

只要判断match[0] 数组的长度即可。

但本文想说的是正则表达式 /./us,这是什么意思呢。

修饰    说明
i    忽略大小写
s    忽略换行,当成一行来看待
u    使用UTF-8字符集来处理
e    替换之后,当作php代码来执行

 

<参考:日文的,想看的朋友凑活看吧>

https://qiita.com/tsuuuuu_san/items/b88b0662426f2b956c77

 

<参考2:另一篇匹配字符串的文章>

https://www.cnblogs.com/52php/p/5677640.html

 

输出:

<这里是$match>

Array
(
    [0] => Array
        (
            [0] => 0
            [1] => 1
            [2] => 2
            [3] => 3
            [4] => 4
            [5] => 5
            [6] => 6
            [7] => 7
            [8] => 8
            [9] => 7
            [10] => 9
            [11] => a
        )

)

<这里是match[0]>

Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
    [5] => 5
    [6] => 6
    [7] => 7
    [8] => 8
    [9] => 7
    [10] => 9
    [11] => a
)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章