首页 > 解决方案 > 在 PHP 中验证字母数字字符串

问题描述

我不确定字母数字是否是正确的术语,但我想验证字符串、整数和破折号组合的字符。示例:yui-4444-99。到目前为止,我已经尝试过 intval、strcmp、ctype_alnum 和 preg_match,但它并没有真正起作用。

样本:

<?php
if (ctype_alnum($string1) == ctype_alnum($string2)) {
    echo "nice!";       
} else {
}

我的 txt. 文件

abc-1234-99
Cedric
93482812
cedric@hotmail.com
---------------------------------------------
def-4332-99
Wendy
98238432
wendy@hotmail.com
Guitar
2010
Yamaha
Scratches on the side
Used
---------------------------------------------
fgh-4567-99
Wendy
98238432
wendy@hotmail.com
---------------------------------------------
yui-4444-99
Wendy
98238432
wendy@hotmail.com
---------------------------------------------
vbn-5624-99
jason
98238432
wendy@hotmail.com
---------------------------------------------

这就是我将我的值提取到差异变量的方式。

<?php
    
$handle = @fopen('listings.txt', "r");
$row = 0;
$count = 0;
$line0 = [];
$line1 = [];
$line2 = [];
$line3 = [];
$line4 = [];
$line5 = [];
$line6 = [];
$line7 = [];
$line8 = [];
$line9 = [];
    
if ($handle) { 
   while (!feof($handle)) { 
       $store = fgets($handle, 4096); 
       if ($row == 10){
        $row = 0;
        $count++;
    }
    if ($row == 0) 
    {
        $line0[] = strval($store);
    }
    else if($row == 1) {
$line1[] = strval($store);}
    else if($row == 2) {
$line2[] = strval($store);}
    else if($row == 3) {
$line3[] = strval($store);}
    else if($row == 4) {
$line4[] = strval($store);}
    else if($row == 5) {
$line5[] = strval($store);}
    else if($row == 6) {
$line6[] = strval($store);}
    else if($row == 7) {
$line7[] = strval($store);}
    else if($row == 8) {
$line8[] = strval($store);}
    
    $row++;
   }
        
      $sn = 0;
      
      
    if (isset($_GET['sn'])) {
        $sn=$_GET['sn'];
    }
      $item = count($line0);
      
        for ($c=0; $c<$item; $c++)
    {
        if((intval($line0[$c]) == intval($sn))) {
        echo $line0[$c],"<br>";
        echo $line1[$c],"<br>";
        echo $line2[$c],"<br>";
        echo $line3[$c],"<br>";
        echo $line4[$c],"<br>";
        echo $line5[$c],"<br>";
        echo $line6[$c],"<br>";
        echo $line7[$c],"<br>";
        echo $line8[$c],"<br>";
        break;
        }
    }
    ?>

    
    
    
    <?php
   fclose($handle); 
} 

    ?>

标签: php

解决方案


从 PHP 8 开始,您可以将字符串与其等效的数字进行比较:

$test = ['', 'a23', '23', 'abc'];
foreach ($test as $string) {
  echo ($string != (int) $string ? 'TRUE' : 'FALSE') . PHP_EOL;
}

输出:

TRUE
TRUE
FALSE
TRUE

推荐阅读