比较两个字符串,一个字符串有一个通配符

时间:2015-05-29 01:44:54

标签: php

我想要比较两个字符串。

string1 = www.domain.com

string2 = *.domain.com

通常,如果我们使用if ($string1 == $string2)..这些不匹配,因为它们不相等,但是,因为string2是一个通配符,我希望它是一个匹配。

条件(S)

  1. *.domain.com应与***anything**.domain.com*
  2. 相匹配
  3. *.domain.com应与*domain.com**something.adifferent.com*
  4. 不匹配
  5. 需要一个解决方案来支持所有TLD,即.com, .net, .org. .com.au等。
  6. 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

我不确定你在问题中说的2点,但我认为你需要这样做: -

<?php


$string1 = '*.domain.com';

$string2 = 'www.domains.com';

$pattern = 'domain'; // put any pattern that you want to macth in both the string.

    if(preg_match("~\b$pattern\b~",$string1) && preg_match("~\b$pattern\b~",$string2) && substr_count($string1,'.') == substr_count($string2,'.')){
        echo 'matched';
    }else{
        echo 'not matched';
    }

?>

输出: - http://prntscr.com/7alzr0

如果string2转换为www.domain.com,那么

http://prntscr.com/7am03m

注意: - 1.如果你想要下面也匹配,那么去找给定的条件。

example:--
$string1 = '*.domain.com'; 
$string2 = 'abc.login.domain.com'; 

if(preg_match("~\b$pattern\b~",$string1) && preg_match("~\b$pattern\b~",$string2) && substr_count($string1,'.') <= substr_count($string2,'.')){