PHP在第一个数字上截断字符串

时间:2014-09-08 14:38:11

标签: php

我有一个简单的问题,因为我是PHP的新手。

我有一个文本框,通过AJAX发送一个帖子请求到一个php文件。 此php文件检查用户在特定文件夹内的文本框中是否输入了同名文件。 一切都运作到现在。

现在,我的文件只用字母命名,不超过2个。 使用以下代码,我可以将搜索字符串截断为仅2个字符

if ($_REQUEST) {
     $q = $_REQUEST['search'];
     $checkFilename = substr($q , 0, 2);

     $fileCSV = "Data/CSV/" . $checkFilename . ".csv";

     if(file_exists($fileCSV)){
        foreach (glob($fileCSV) as $file) {
        $file_handle = fopen($file, "r");
        while (!feof($file_handle)) {
            $line = fgets($file_handle);
            echo $line;
        }
        fclose($file_handle);
    }
     } else {
        echo "This file doesn't exist!";
     }      
};

但现在我的问题是:

如果第二个字符是数字怎么办?正如我告诉你的那样,我的文件名只有2个字母组成。

如果第二个字符是数字,如何将字符串截断为第一个字符?

希望很清楚,因为英语不是我的母语。

干杯

2 个答案:

答案 0 :(得分:2)

有很多不同的方法可以做到这一点,使用正则表达式,在文本中搜索等等......但是我会选择这个:

$checkFilename = substr($q, 0, 2);更改为:

$checkFilename = trim(substr($q, 0, 2), "0123456789");

它会从最后删除任何数字。

答案 1 :(得分:1)

正则表达式可以起作用:

$checkFilename = preg_replace("%^([a-zA-Z]{1,2}).*$%", "\\1", $checkFilename);

从字符串的开头,查找A-Z和a-z之间的1到2个字符,忽略其余字符,您可以获得前导文件名字符。

考虑以下内容(在PHP解释控制台中运行):

php > echo preg_replace("%^([a-zA-Z]{1,2}).*$%", "\\1", "sf3fw34");
sf

php > echo preg_replace("%^([a-zA-Z]{1,2}).*$%", "\\1", "s3dfs");
s