starts区分大小写



找不到一个似乎足够简单的解决方案。我有用户输入字段,想检查用户是否在要求的代码前面加了一个S(示例代码S123456,所以我想检查一下,以确保他们没有只加123456(。

// Function to check string starting with s
if (isset($_REQUEST['submitted'])) { $string=$_POST['required_code'];function startsWith ($string, $startString){$len = strlen($startString);return (substr($string, 0, $len) === $startString);
}

// Do the check 
if(startsWith($string, "s"))echo "Code starts with a s";else echo "Code does not start with a s";}

问题是,如果用户输入大写字母S,则这被视为不是小写字母S。

所以我可以用绕过这个问题

$string = strtolower($string);

因此,如果用户输入大写的S,则在检查之前会将其转换为小写。但这是最好的方式吗?难道没有什么方法可以说S或S吗?有什么建议吗?

您可以使用stripos而不是创建自己的函数。Stripos尝试查找第一个出现的不区分大小写的子字符串。

因此,作为检查,你可以:

if(stripos($string, "s") === 0)

您需要3个等号,因为如果stripos找不到子字符串,它将返回false(0(。

任你挑选;有很多方法可以查看字符串是否以"S"开头。其中有些区分大小写,有些则不然。下面的选项应该都有效,尽管我认为它们中没有任何一个比您当前的解决方案更好。stripos()可能是"最干净"的检查。如果您需要多字节支持,还有mb_stripos()变体。

(尽管;请记住,stripos()也可以返回false。如果使用该选项,始终使用更严格的"相同"运算符===,而不是==,以防止类型杂耍。(

if (stripos($string, 's') === 0) {
// String starts with S or s
} else {
// It does not
}
if (str_starts_with($string, 's') || str_starts_with($string, 'S')) // ...
if (in_array(substr($string, 0, 1), ['S', 's'], true)) // ...
if (preg_match('/^s/i', $string)) // ...
// Many other regexp patterns also work

谢谢大家,这是

if (str_starts_with($string, 's') || str_starts_with($string, 'S')) // ...

我在找我试过

if (str_starts_with($string, 's' || 'S')) // ...

相关内容

  • 没有找到相关文章

最新更新