Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP检查字符串是否以#_Php_String - Fatal编程技术网

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)开头时,字符串被忽略。你知道解决这个问题的方法吗?