验证,如果字符串以给定的子字符串开头

Sim*_*mon 19 php

我有一个$str变量字符串.

我怎么能验证它是从一些单词开始的?


$str = "http://somesite.com/somefolder/somefile.php";
Run Code Online (Sandbox Code Playgroud)

当我写下面的脚本返回yes

if(strpos($str, "http://") == '0') echo "yes";
Run Code Online (Sandbox Code Playgroud)

但它返回是的,即使我写

if(strpos($str, "other word here") == '0') echo "yes";
Run Code Online (Sandbox Code Playgroud)

我认为如果它也找不到子串(或空值)它会strpos返回zero.

所以,我能做什么,如果我想验证这个词,在字符串的开头?(也许我必须===在这种情况下使用?)

cle*_*tus 39

你需要这样做:

if (strpos($str, "http://") === 0) echo "yes"
Run Code Online (Sandbox Code Playgroud)

===运营商进行严格比较并不强制类型.如果你使用==那么false,一个空字符串,null,0,空数组和一些其他的东西会是等价的.

请参阅类型杂耍.

  • 来吧,这就是整个帖子的内容! (2认同)

Den*_*ink 20

您应该使用身份运算符(===)进行检查,请参阅文档.

你的测试成了:

if(strpos($str, "http://") === 0) echo "yes"; //returns yes
Run Code Online (Sandbox Code Playgroud)

  • @Syom:你的测试变成:`if(strpos($ str,"http://")=== 0)echo"yes"; //返回yes` (3认同)