Я пытаюсь добавить корневой URL к URL перенаправления, но ТОЛЬКО если он не содержит http
или же https
А ТАКЖЕ не начать с /
,
У меня есть этот код, который появляется работать:
$redirect_url = '/foo';
if (!preg_match('#https?://|^/#', $redirect_url)) {
$redirect_url = 'http://' . $redirect_url;
}
Но мне интересно, вместо того, чтобы использовать |
персонаж для OR
я не должен использовать AND
— но я не уверен, как в регулярных выражениях?
Вы можете избежать использования |
используя это регулярное выражение:
^(https?:/)?/
В коде:
if (!preg_match('#^(https?:/)?/#', $redirect_url)) {
$redirect_url = 'http://' . $redirect_url;
}
Просто измените свое регулярное выражение на,
if (!preg_match('#^(?:https?://|/)#', $redirect_url)) {
$redirect_url = 'http://' . $redirect_url;
}
Не уверен, что понимаю ваши потребности, но вы этого хотите?
if (preg_match('#(?!.*https?://)(?!^/)#', $redirect_url)) {
$redirect_url = 'http://' . $redirect_url;
}