Использование ^
в выражении означает утверждение начала строки, которую вы проверяете во втором предложении:
if (!preg_match('/^https?/', $link) && preg_match('/^hotel/', $link, $matches) && preg_match('/^https?/', $matches[1])) {
Если вы хотите использовать preg_match , вы можетеиспользуйте одно выражение, чтобы проверить, начинается ли строка с http с необязательным s:
^https?://.*?/hotel/
^
Начало строки https?://
Соответствие http
, необязательноs
, ://
.*?
Соответствует любому символу, кроме новой строки без жадности /hotel/
Соответствует буквально
Regex demo | Php demo
Например:
if (!preg_match('~^https?://.*?/hotel~', $link)) {
continue;
}
Без использования регулярных выражений вы также можете использовать комбинацию substr и strpos
if (!(substr($link, 0, 4 ) === "http" && strpos($link, '/hotel/') !== false)) {
continue;
}
Php демо