Как в 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;