我必须检查字符串是否包含http或https多次。
例如:
https://plus.google.com/share?url=https://example.com/test/
或者它可以是:
https://plus.google.com/share?url=http://example.com/test/
http
和https
可以混合使用
答案 0 :(得分:8)
好吧,因为如果你的字符串包含“https”,那么它也包含“http”,你可以直接计算“http”的出现次数,例如使用函数substr_count:
if(substr_count($your_string, "http") > 1) {
// do something
}
else {
// do something else
}
答案 1 :(得分:0)
您可以使用preg_match_all()
返回找到的匹配数。
if (preg_match_all('/http|https/', $searchString) > 1) {
print 'More than one match found.';
}
答案 2 :(得分:0)
您可以使用正则表达式搜索http和https
$x = "http://plus.google.com/share?url=https://example.com/test/";
preg_match_all('/https?/',$x,$matches);
if(count($matches[0])>1)
//more than once
答案 3 :(得分:0)
使用strpost()
和strrpos()
的高性能版本:
$appears_more_than_once = strpos($string, 'http') !== strrpos($string, 'http');
检查第一个实例和最后一个实例是否不相同。
答案 4 :(得分:-1)
您可以使用strpos strpos返回字符串中第一次出现子字符串的位置 要找到所有出现的重复调用strpos,将最后一个strpos调用的返回值+子串的长度作为偏移量传递。
function countOccurences($haystack,$needle) {
$count = 0;
$offset = 0;
while(($pos = strpos($haystack,$needle,$offset)) !== FALSE) {
$count++;
$offset = $pos + strlen($needle);
if($offset >= strlen($haystack)) {
break;
}
}
return $count;
}
echo countOccurences("https://plus.google.com/share?url=https://example.com/test/","http");