Как в php, в строчке удалить /page/цифра или /feed/ и вернуть строчку без этих символов?

Как сделать проверку, если в строчке есть "/page/цифра" или "/feed/" , и чтобы возвращало строчку без этих символов?

например, "/pochemu-ona-nuzhna/page/" - чтобы возвращало "/pochemu-ona-nuzhna/", или, "/pochemu-ona-nuzhna/page/2/" - чтобы возвращало "/pochemu-ona-nuzhna/", или, "/pochemu-ona-nuzhna/page/3/" - чтобы возвращало "/pochemu-ona-nuzhna/", и тому подобные цифры, или, "/v-podarok/feed/" - чтобы возвращало "/v-podarok/"

<?php
    $otvet = $_SERVER['REQUEST_URI'];

    if (preg_match("/\bpage\b/i", $otvet)) {
        echo '<link rel="canonical" href="https://led-digital.ru' .$otvet. '" />';
    } else {
        echo '<link rel="canonical" href="https://led-digital.ru' .$otvet. '" />';
    }

?>

Ответы (1 шт):

Автор решения: Eugene X

PREG перечислением можно сделать.

$uri = "/pochemu-ona-nuzhna/page/3/";
if (preg_match("@^(/(pochemu-ona-nuzhna|v-podarok))/@i", $uri, $matches) > 0) {
    echo $matches[1];
} else {
    echo "Ошибка совпадения";
}

=== Добавлено спустя ==

Второй способ отрубать хвост, но он намного более затратный со стороны регулярки.

$uri = "/pochemu-ona-nuzhna/page/3/";
$result = preg_replace('@(feed/|page/(\d+/)?)$@m', '', $uri);
echo $result;
→ Ссылка