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

How can I check if a certain string is at the start of a string?

我正在尝试 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";
 }

有什么帮助吗?

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

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

如果您 want/need 使用正则表达式,只需在开头使用 anchor (^) 来匹配您的正则表达式,例如

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

此外,如果您正在编写自己的正则表达式,我可以强烈推荐这个网站:https://regex101.com/,它很好地突出显示了所有内容,并且您会在右侧得到一个很好的解释,即您的正则表达式的作用。

只需 '/^\s*<szFilename>.+/' 即可。