PHP检查字符串是否以#
我知道这有一些函数,但我尝试过的那些函数不能与字符“#”一起使用 我现在用的是PHP检查字符串是否以#,php,string,Php,String,我知道这有一些函数,但我尝试过的那些函数不能与字符“#”一起使用 我现在用的是 function startsWithChar($needle, $haystack) { return ($needle[0] === $haystack); } 当我尝试检查“#”时,它返回false 有人知道使用“#”字符的函数吗 编辑: 我注意到这个函数是有效的,问题是我正试图使用GET来实现这个功能。很明显,当GET以#(search.php?query=#asd)开头时,字符串被忽略。你知道解决这
function startsWithChar($needle, $haystack)
{
return ($needle[0] === $haystack);
}
当我尝试检查“#”时,它返回false
有人知道使用“#”字符的函数吗
编辑:
我注意到这个函数是有效的,问题是我正试图使用GET来实现这个功能。很明显,当GET以#(search.php?query=#asd)开头时,字符串被忽略。你知道解决这个问题的方法吗?你是不是把针头和干草堆搞混了
function startsWithChar($needle, $haystack) {
return ($haystack[0] === $needle);
}
$string1 = 'Test';
var_dump(startsWithChar('#',$string1)) ;
$string2 = '#Test';
var_dump(startsWithChar('#',$string2)) ;
这个怎么样:
function startsWithChar($haystack, $needle){
return mb_strpos($haystack, $needle) === 1;
}
现在您已经编辑完毕,一切都变得清晰了。URL中的文字“#”字符被解释为查询字符串的结尾和片段的开头,因此您的脚本得到的只是“search.php?query=”。请改用%23。有关详细信息,请参阅。您如何知道它返回带#的false?不过您在混合术语。它应该是
$haystack[0]===$needle
。Haystack是我们搜索的地方,needle是我们搜索的地方如果URL以#asd
结尾,那么PHP将永远看不到它。浏览器过滤掉散列/锚点名称。$\u GET变量将为空,这就是它失败的原因。如果您想使此工作正常,您必须使用urlencode()
the#
。我用它们更改了位置,但它仍然返回false,因此这不是问题所在。@Krufts-向我们显示您正在使用的数据。只要字符串确实以#字符开头,此方法就可以工作。var_在测试之前扔掉你的针头和草堆来确认。我注意到这个函数可以工作,问题是我正在尝试使用GET来完成这项工作。很明显,当GET以#(search.php?query=#asd)开头时,字符串被忽略。你知道解决这个问题的方法吗?