我如何匹配和替换没有http的域名


How do I match and replace a domain name without http?

我想在字符串中搜索,如果找到一个域,将其删除并留下剩余的内容。这些域名都不能以http或https开头。

我要删除的字符串示例:

domain.com or
domain.something.us
domain.something.uk

我想如果我使用一个通配符,它会工作,但我没有做正确的事情。

$str = preg_replace( '/(?'.net|?'.org|?'.edu|?'.com)/', '', $str );
编辑:

所有字符串一般都以这个开头:

domain.com -这里有一些很长的字符串.....

我要做的是删除-之前的所有内容。但是,有时用户可能会忘记添加domain -。在这种情况下,它只需要返回字符串的其余部分。

输出将是:

domain.com -这里有些长。

应转换为:

这里有点长

您可以使用以下正则表达式与im修饰符:

^((?:[a-z0-9-]+'.)*[a-z0-9-]+(?:'.[a-z]+){1,2}'s*-)'s*

匹配:

  • 所有域名
  • 任意数量的子域
  • .co.uk.co.in等多级域(仅限两级)

注意,它也会匹配很多无效的域名。但我想,如果你只是想从给定的文本中删除所有域名,这应该无关紧要。

<<p> Regex101演示/strong>