如何检查 space 中是否有多个 space 或开头有 space

How to check if more than one space or beginning has space in PHP

  1. Hello World
  2. Hello World
  3. hello world

    或者如果开头有 space
  4. Hello World

如果 $q 具有正常值,但我从 搜索输入 中获取 $q 值,因此它不起作用,除了情况 1。

$q = Input::get('q');

if(preg_match("/^\s+/", $q) || preg_match("/\s{2,}/", $q)) {
        echo 'Found Spaces';    
}
if(preg_match("/^\s+/", $q) || preg_match("/\s{2,}/", $q))
    {
       
    }
 
/\s+/g
  • \s 匹配 space.
  • +至少要说一个。
  • g全局标记,全部匹配。

您是否尝试过使用 PHP trim() 函数?使用 trim() 删除多余的空格,然后应用更高级的过滤器或任何您命名的过滤器。 如果你想要一个布尔值,只需检查原始字符串是否与 trimmed 字符串不同。 文档:https://www.php.net/manual/en/function.trim.php

而不是 Input::get('q'); 使用 $q = $_GET['q'];
所以你的代码变成:

   $q = $_GET['q'];
    
    if(preg_match("/^\s+/", $q) || preg_match("/\s{2,}/", $q)) {
            echo 'Found Spaces';    
    }

您可以使用对 preg_match 的单个调用和交替 | 来检查两种情况。

由于 \s 也可以 match a newline,您可以使用 \h 来匹配水平空白字符。

^\h|\h\h

正则表达式演示

$q = Input::get('q');

if(preg_match("/^\h|\h\h/", $q) ) {
    echo 'Found Spaces';
}