如果字符串以“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)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

判断以xx开头的字符串

Python过滤器功能-如果列表中的单词以特定字符开头[重复]

python 正则表达式,怎样匹配以某个字符串开头,以某个字符串结尾的情况?

Linux:正则表达式2

python 正则表达式

如何检查一个字符串是不是以另一个字符串开头 - PHP