Регулярное решение легко.Просто установите отрицательный взгляд на начало строки следующим образом: (С комментариями ...)
if (preg_match('%
# Match non-http ,com or .net domain.
^ # Anchor to start of string.
(?! # Assert that this URL is NOT...
https?:// # HTTP or HTTPS scheme with
(?:www\.)? # optional www. subdomain.
) # End negative lookahead.
.* # Match up to TLD.
\. # Last literal dot before TLD.
(?: # Group for TLD alternatives.
net # Either .net
| com # or .com.
) # End group of TLD alts.
$ # Anchor to end of string.
%xi', $text)) {
// It matches.
} else {
// It doesn't match.
}
Обратите внимание, что, поскольку: http://www.
является подмножеством: http://
, выражение длянеобязательно www.
не обязательно.Вот более короткая версия:
if (preg_match('%^(?!https?://).*\.(?:net|com)$%i', $text)) {
// It matches.
} else {
// It doesn't match.
}
Простое регулярное выражение в помощь!