在字符串中查找反斜杠的出现次数。

3
如果我的字符串是:aud\ios,我该如何检查其中是否存在\
我尝试使用preg_match('\\' , $string),但它不起作用。正确的方法是什么?

1
请查看strpos() - John Conde
strpos对于这种简单的匹配已经足够了。 - briosheje
3个回答

7

对于这样简单的内容,您不需要正则表达式。像strpos()这样的字符串函数应该足够使用:

if (strpos('aud\ios', '\\') !== FALSE) {
    // String contains '\'
}

请注意,在这里需要转义反斜杠。如果你只写\,PHP会将其视为转义序列并尝试转义后面的字符。为了避免这种情况,你需要使用另一个反斜杠来转义它:\\
至于如何使用preg_*函数匹配一个字面上的反斜杠,你需要使用\\\\而不是单个\
根据PHP手册文档中的转义序列
引号包裹的 PHP 字符串有特殊的反斜杠含义。因此,如果要将\与正则表达式匹配,则必须在 PHP 代码中使用"\\\\"'\\\\'
所以你的代码应该像这样:
preg_match('/\\\\/', $string); // Don't use this though

说明:

  • / - 开始定界符
  • \\\\ - 匹配一个字面上的反斜杠
  • / - 结束定界符

如果需要更多关于此的信息,请参见:


谢谢提供的信息! :) 我只是简单地使用了: strpos($newfoldername, '\') 必须使用双 \ - user2074836

0
if (strstr('aud\ios', '\\') !== false) {
    //Contains "\"
}

2
从手册中:如果您只想确定一个特定的字符是否包含在字符串 haystack 中,那么请使用更快速且占用内存更少的函数 strpos()。 - Amal Murali
这里实际上没有任何区别,但是是的,我认为strpos会更正确。 - Mikk

0

我经常使用这个函数,你可以轻松地检查一个 string 是否包含

function StringContains($the_string,$contains)
{
    return strpos($the_string, $contains) !== FALSE;
}   

看看这个:http://3v4l.org/LrDBd

当然,在调用函数时你必须转义反斜杠,像这样:StringContains('aud\ios','\\');


最好还是这样写:return strpos($the_string, $contains) !== FALSE; - Amal Murali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接