Подберите URL-ссылку и проигнорируйте страницу позади

У меня есть этот код, который будет соответствовать URL-адрес и чем-то сделать, это работает хорошо, но когда URL-адрес имеет некоторую страницу позади, как /board/users/somename/replies/page/2/ код не будет работать. Как я могу обнаружить только эту часть URL /board/users/somename/replies/ и игнорировать остальное позади? Спасибо за помощь.

$pageURL = $_SERVER['REQUEST_URI'];
$myurl   = '/board/users/somename/replies/';

if (strtolower($pageURL) == strtolower($myurl) ) {

echo "right";

}else{

echo "wrong";

}

0

Решение

Вам просто нужно сопоставить начало строки, вот так:

if ( strpos(strtolower($pageURL), strtolower($myurl)) === 0 )

Вы также должны убедиться, что начальная и конечная косая черта совпадают, поэтому я бы посоветовал вам изменить первые две строки вашего кода следующим образом:

$pageURL = '/' . trim($_SERVER['REQUEST_URI'], '/');
$myurl   = '/board/users/somename/replies';

РЕДАКТИРОВАТЬ: я неправильно понял. Это сейчас исправлено.

0

Другие решения

просто попробуйте регулярное выражение

if preg_match('/'.$myurl.'/', $pageUrl) {}

это будет соответствовать любому URL, в котором есть $ myurl. preg_match возвращает 1, если регулярное выражение совпадает, и 0, если нет.

если вы хотите исключить URL со страницей / внутри, попробуйте использовать regex

if preg_match('/(?!'.$myurl.'page\/)'.$myurl.'/', $pageUrl) {}

Отрицательный взгляд позволяет убедиться, что myurl / page / не указан в URL, а затем вы просто соответствуете своему URL.

редактировать: для получения дополнительной информации о preg_match проверьте руководство по PHP на preg_match

0

Вы также можете использовать PHP stristr функция, чтобы соответствовать началу строки. (без учета регистра)

Попробуй это:

$pageURL = $_SERVER['REQUEST_URI'];
$myurl   = '/board/users/somename/replies/';

if (stristr($pageURL, $myurl) !== FALSE) {
echo "right";
} else {
echo "wrong";
}

Я надеюсь, что это помогает!

0
По вопросам рекламы [email protected]