Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php获取行的第一个非空白字符_Php_Whitespace - Fatal编程技术网

如何使用php获取行的第一个非空白字符

如何使用php获取行的第一个非空白字符,php,whitespace,Php,Whitespace,我有一行,通常以几个空格开始,因为这些行在列中,并使用单空格字体使事情排列起来。我想检查第一个非空格字符(甚至是第一个不是空格的字符)是否是数字。执行此操作的服务器密集度最低的方法是什么?您可以使用trim()(或在本例中使用ltrim())删除空白,并利用字符串的数组访问: $line = ltrim($line); is_numeric($line[0]); 可以使用正则表达式: if (preg_match('/^\s*(\S)/m', $line, $match)) { var

我有一行,通常以几个空格开始,因为这些行在列中,并使用单空格字体使事情排列起来。我想检查第一个非空格字符(甚至是第一个不是空格的字符)是否是数字。执行此操作的服务器密集度最低的方法是什么?

您可以使用
trim()
(或在本例中使用
ltrim()
)删除空白,并利用字符串的数组访问:

$line = ltrim($line);
is_numeric($line[0]);

可以使用正则表达式:

if (preg_match('/^\s*(\S)/m', $line, $match)) {
    var_dump($match[0]);
}
或者删除开头的空白,然后获得第一个字符:

$line_clean = ltrim($line);
var_dump(substr($line_clean, 0, 1));
试试正则表达式:

$Line = ...;
preg_match('/^[:space:]*(.)/', $Line, $matches);
$FirstChar = $matches[0];

如果能就我的答案被否决的原因得到评论,那就太好了。谈谈明目张胆的“战略否决权”。嘘。
$Line = ...;
preg_match('/^[:space:]*(.)/', $Line, $matches);
$FirstChar = $matches[0];
if (preg_match('/^\s*\d/', $line)) {
    // ^    starting at the beginning of the line
    // \s*  look for zero or more whitespace characters
    // \d   and then a digit
}