PHP:检查字符串是否包含多次相同的单词

时间:2017-03-12 21:38:17

标签: php

我必须检查字符串是否包含http或https多次。

例如:

https://plus.google.com/share?url=https://example.com/test/

或者它可以是:

https://plus.google.com/share?url=http://example.com/test/

httphttps可以混合使用

5 个答案:

答案 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");