Php 查找字符串匹配
我需要检查一个变量,看看字符串是否以http://或https开头:// 如果它存在,做点别的,做另一件。我该怎么做呢Php 查找字符串匹配,php,regex,Php,Regex,我需要检查一个变量,看看字符串是否以http://或https开头:// 如果它存在,做点别的,做另一件。我该怎么做呢 preg_match('!^https?://!', $string) 这个问题不清楚。如果您只想知道字符串是否以http或https开头,可以使用 $startsWithIt = (strpos($haystack, 'http') === 0); 如果希望支票包含://,则必须执行以下操作: if((strpos($haystack, 'http://') === 0
preg_match('!^https?://!', $string)
这个问题不清楚。如果您只想知道字符串是否以http或https开头,可以使用
$startsWithIt = (strpos($haystack, 'http') === 0);
如果希望支票包含://
,则必须执行以下操作:
if((strpos($haystack, 'http://') === 0) ||
(strpos($haystack, 'https://') === 0)) {
echo 'Strings starts with http:// or https://';
}
if((strpos($haystack, 'http://') === 0) ||
(strpos($haystack, 'https://') === 0)) {
echo 'Strings starts with http:// or https://';
}
如果您需要知道这两个选项中的哪一个,那么问题就不清楚了。如果您只想知道字符串是否以http或https开头,可以使用
$startsWithIt = (strpos($haystack, 'http') === 0);
如果希望支票包含://
,则必须执行以下操作:
if((strpos($haystack, 'http://') === 0) ||
(strpos($haystack, 'https://') === 0)) {
echo 'Strings starts with http:// or https://';
}
if((strpos($haystack, 'http://') === 0) ||
(strpos($haystack, 'https://') === 0)) {
echo 'Strings starts with http:// or https://';
}
如果您需要知道这两个选项中的哪一个,您可能正在寻找:
switch(parse_url($string, PHP_URL_SCHEME)){
case 'https':
//do something
case 'http':
//something else
default:
//anything else you'd like to support?
}
您可能正在寻找:
switch(parse_url($string, PHP_URL_SCHEME)){
case 'https':
//do something
case 'http':
//something else
default:
//anything else you'd like to support?
}
这里还有一个:
function startsWithHttpOrHttps($haystack)
{
return substr_compare($haystack, 'http://', 0, 7) === 0
|| substr_compare($haystack, 'https://', 0, 8) === 0;
}
在我的机器上,这比我的doublestrpos
解决方案(即使添加了substr
,以防止超过全长字符串)和Regex的性能更好。这里是另一个:
function startsWithHttpOrHttps($haystack)
{
return substr_compare($haystack, 'http://', 0, 7) === 0
|| substr_compare($haystack, 'https://', 0, 8) === 0;
}
$startsWithIt = (strpos($haystack, 'http') === 0);
在我的机器上,这比我的doublestrpos
解决方案(甚至添加了substr
,以防止超过全长字符串)和正则表达式的性能要好
$startsWithIt = (strpos($haystack, 'http') === 0);
如果希望支票包含:/,则必须执行以下操作:
if((strpos($haystack, 'http://') === 0) ||
(strpos($haystack, 'https://') === 0)) {
echo 'Strings starts with http:// or https://';
}
if((strpos($haystack, 'http://') === 0) ||
(strpos($haystack, 'https://') === 0)) {
echo 'Strings starts with http:// or https://';
}
如果希望支票包含:/,则必须执行以下操作:
if((strpos($haystack, 'http://') === 0) ||
(strpos($haystack, 'https://') === 0)) {
echo 'Strings starts with http:// or https://';
}
if((strpos($haystack, 'http://') === 0) ||
(strpos($haystack, 'https://') === 0)) {
echo 'Strings starts with http:// or https://';
}
哇,太棒了。我不知道preg_match会给出一个布尔值,如果它是真的还是假的。有正则表达式的文档页吗?现在看,我想我明白了…^是从…开始的吗。。。。?前一个角色可能是s…不知道是什么!平均值。
preg_match()
不返回布尔值。它返回找到的匹配数;当它在第一次匹配后停止时,它只能返回0或1。如果您正在检查返回值,如If(preg_match()==TRUE){}
中所示,那么您将不会得到预期的结果。虽然这在技术上是正确的,但这是一个糟糕的建议。请参见戈顿的答案,以获得更快的解决方案。“更快”,真的吗?除了Gordon的答案只是检查字符串是否以http开头外,这与检查字符串是否以http://或https://开头并不相同Pixel Developer:向我们展示基准测试的证据,以及单个正则表达式条件测试比两个strpos()测试慢的意义。哇,效果很好。我不知道preg_match会给出一个布尔值,如果它是真的还是假的。有正则表达式的文档页吗?现在看,我想我明白了…^是从…开始的吗。。。。?前一个角色可能是s…不知道是什么!平均值。preg_match()
不返回布尔值。它返回找到的匹配数;当它在第一次匹配后停止时,它只能返回0或1。如果您正在检查返回值,如If(preg_match()==TRUE){}
中所示,那么您将不会得到预期的结果。虽然这在技术上是正确的,但这是一个糟糕的建议。请参见戈顿的答案,以获得更快的解决方案。“更快”,真的吗?除了Gordon的答案只是检查字符串是否以http开头外,这与检查字符串是否以http://或https://开头不同。Pixel Developer:向我们展示基准测试的证据,以及单个正则表达式条件测试比两个strpos()测试慢的意义。一个合理的答案。我希望人们停止为琐碎的字符串匹配投票regex。这只会检查字符串是否以http
或https
开头,而不是以http://
或https://
@Gumbo@silenghost开头。不,它只检查http
。我务实地假设OP只是想知道是否有URL方案。正如我所说的,这个问题对于实际用例是模糊的,或者从httpanythingelse开始,所以从技术上讲它不符合要求。当然,您可以将其修改为(strpos($haystack,'http://')==0 | | | strpos($haystack,'https://'))==0),但这不会改变SilentGhost语句的有效性。这是一个合理的答案。我希望人们停止为琐碎的字符串匹配投票regex。这只会检查字符串是否以http
或https
开头,而不是以http://
或https://
@Gumbo@silenghost开头。不,它只检查http
。我务实地假设OP只是想知道是否有URL方案。正如我所说的,这个问题对于实际用例是模糊的,或者从httpanythingelse开始,所以从技术上讲它不符合要求。当然,您可以将其修改为(strpos($haystack,'http://')==0 | | | strpos($haystack,'https://')==0),但这不会改变SilentGhost语句的有效性;switch($urlScheme){会更奇妙,但这仍然是一个很棒的答案。$urlScheme=parse\u url($string,PHP\u url\u SCHEME);switch($urlScheme){
会更奇妙,但这仍然是一个很棒的答案。