我有一个简单的问题,因为我是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个字母组成。
如果第二个字符是数字,如何将字符串截断为第一个字符?
希望很清楚,因为英语不是我的母语。
干杯
答案 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