如果字符串以“xx”开头(PHP)[重复]
Posted
技术标签:
【中文标题】如果字符串以“xx”开头(PHP)[重复]【英文标题】:if string begins with "xx" (PHP) [duplicate] 【发布时间】:2011-08-15 15:33:54 【问题描述】:if ($_POST['id'] beginsWith "gm")
$_SESSION['game']=="gmod"
if ($_POST['id'] beginsWith "tf2")
$_SESSION['game']=="tf2"
如何做到这一点才能发挥作用?
【问题讨论】:
你必须用 C 代码编写一个补丁来添加这个关键字/语法 【参考方案1】:你可以使用substring
if(substr($POST['id'],0,3) == 'tf2')
//Do something
编辑:修正了错误的函数名称(使用了substring()
,应该是substr()
)
【讨论】:
+1。这应该(稍微)比 strpos 快,因为它不会在失败时遍历整个字符串。 @EmilVikström 我严重怀疑你关于substr()
比strpos()
快的说法。事实上,我相信它会更慢!【参考方案2】:
您可以使用strpos
编写begins_with
:
function begins_with($haystack, $needle)
return strpos($haystack, $needle) === 0;
if (begins_with($_POST['id'], "gm"))
$_SESSION['game']=="gmod"
// etc
【讨论】:
【参考方案3】:if (strpos($_POST['id'], "gm") === 0)
$_SESSION['game'] ="gmod"
if (strpos($_POST['id'],"tf2") === 0)
$_SESSION['game'] ="tf2"
【讨论】:
这是错误的。如果 strpos 返回 false,则这两个 if 语句都将评估为 true。 @andrewtweber:在那里。将==
替换为===
:-P【参考方案4】:
这不是最快的方法,但你可以使用正则表达式
if (preg_match("/^gm/", $_POST['id']))
$_SESSION['game']=="gmod"
if (preg_match("/^tf2/, $_POST['id']))
$_SESSION['game']=="tf2"
【讨论】:
【参考方案5】:function startswith($haystack, $needle)
return strpos($haystack, $needle) === 0;
if (startswith($_POST['id'], 'gm'))
$_SESSION['game'] = 'gmod';
if (startswith($_POST['id'], 'tf2'))
$_SESSION['game'] = 'tf2';
请注意,在为变量赋值时使用单个 =
【讨论】:
以上是关于如果字符串以“xx”开头(PHP)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python过滤器功能-如果列表中的单词以特定字符开头[重复]