У меня есть этот код, который будет соответствовать 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";
}
Вам просто нужно сопоставить начало строки, вот так:
if ( strpos(strtolower($pageURL), strtolower($myurl)) === 0 )
Вы также должны убедиться, что начальная и конечная косая черта совпадают, поэтому я бы посоветовал вам изменить первые две строки вашего кода следующим образом:
$pageURL = '/' . trim($_SERVER['REQUEST_URI'], '/');
$myurl = '/board/users/somename/replies';
РЕДАКТИРОВАТЬ: я неправильно понял. Это сейчас исправлено.
просто попробуйте регулярное выражение
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
Вы также можете использовать PHP stristr
функция, чтобы соответствовать началу строки. (без учета регистра)
Попробуй это:
$pageURL = $_SERVER['REQUEST_URI'];
$myurl = '/board/users/somename/replies/';
if (stristr($pageURL, $myurl) !== FALSE) {
echo "right";
} else {
echo "wrong";
}
Я надеюсь, что это помогает!