如何检查某个字符串是否在字符串的开头?

如何检查某个字符串是否在字符串的开头?

问题描述:

我想。基本上的preg_match一个字符串,如果我得到这是考虑到一个变量如何检查某个字符串是否在字符串的开头?

$line = " <szFilename> &#6; ds </szFilename> " 

一个字符串,我需要检查,如果蜇与"<szFilename>" . 我发现很难找到的模式开始。 我试过的是

$line=" <szFilename> &#6; ds </szFilename> "; 
//$line2=" <szFilenamed1> &#6; ds </szFilenamed1> "; 
//echo trim($line); 
if(preg_match("/[<szFilename>]*/",trim($line))){ 
    echo "GOT IT"; 
} 

任何帮助吗?

+0

我们这个问题在哪里? – Rizier123

这里不需要正则表达式。只需简单地使用strpos()来确定该字符串是否处于开始(索引0)或不是,例如,

if(strpos(trim($line), "<szFilename>") === 0) { 
    echo "success"; 
} 

如果你想/需要使用正则表达式,只需使用一个anchor^)在开始时,如您正则表达式匹配

if(preg_match("/^<szFilename>/", trim($line))) { 
    echo "success"; 
} 

此外,如果你正在写自己的正则表达式的,我强烈推荐这个网站:https://regex101.com/,它很好地突出了一切,你会得到一个很好的解释的权利,你的正则表达式做什么。

+1

使用'strpos(...)=== 0'来避免当strpos()返回false时的情况 –

+0

谢谢你的工作 –

+0

@PhilemonphilipKunjumon不客气。祝你今天愉快 :) – Rizier123

只需'/^\s*<szFilename>.+/'是您所需要的。