如何从文本文件中过滤出字母(字符串的开头和结尾),然后将其打印出来

时间:2019-01-23 07:54:41

标签: php regex filter file-read

该功能需要跳过文本文件中的行(在读取后),其中在FIRST && LAST字符串位置包含符号或数字。 例如,应该跳过string($ password column) 1 21dafas d 并且不打印出来,因为它以数字开头 我尝试了很多事情,但是所有尝试都失败了。我是PHP语言的新手

THE CODE
 function dataPrint(){

  print "\t"." Users: Login Password  <br>";
 $file=fopen("data.txt" , "c");
 if (!$file)
 print "Error! No such file!";

else {                                                    
 print "<table><tr><th width=\"50%\">Login</th>
 <th width=\"50%\">Password</th>
 ";
             $info=file("data.txt");

         foreach($info as $rec)
         {

                 $rec=rtrim($rec);

                 print("<tr>");
                 list($login, $pass) = explode(' ', "$rec");
                 print("<td>$login</td>");
                 print("<td>$pass</td>");

         }

   print("</table>");

现在它将所有数据打印为表格

Login   Password 
quartz  2sp1lzod54at3sia6
quartz1 73u168rtz54a2q
quartz2 odsp@aw1rs

但是它应该只打印那些在字符串的开始&&末尾仅包含字母的行

Example :
Login     Password
quartz1   1asdfasdfdf@a   <----- NOT VALID(Should not be printed)
quartz2   asdf!2adf1      <----- NOT VALID(Should not be printed)
quartz3   asdf211@11a     <----- VALID
quartz4   gsasdff11e      <----- VALID
quartz5   fd@adf!adf1d    <----- VALID

结尾应该看起来像这样。

Login     Password
quartz3   asdf211@11a   
quartz4   gsasdff11e     
quartz5   fd@adf!adf1d     

1 个答案:

答案 0 :(得分:1)

您可以使用preg_match来验证密码是否以字母开头和结尾:

foreach($info as $rec) {
    $rec=rtrim($rec);
    list($login, $pass) = explode(' ', "$rec");
    if (preg_match('/^[a-z].*[a-z]$/i', $pass)) {
        print("<tr>");
        print("<td>$login</td>");
        print("<td>$pass</td>");
        print("</tr>\n");
    }
}

输出:

<tr><td>quartz3</td><td>asdf211@11a</td></tr>
<tr><td>quartz4</td><td>gsasdff11e</td></tr>
<tr><td>quartz5</td><td>fd@adf!adf1d</td></tr>

Demo on 3v4l.org