Как изменить мой оператор strpos так, чтобы он указывал только на точную строку - PullRequest
2 голосов
/ 21 марта 2012

Предупреждение - я дизайнер переднего плана; Прошу прощения, что я возился с понятиями PHP здесь

Итак, у меня есть оператор PHP, который в основном выводит класс в моей разметке, когда URL страницы совпадает с оператором. Вот оно:

<?php if (strpos($_SERVER["REQUEST_URI"],"/technology") === false) {} else { echo "current"; } ?>

Как есть, я использую оператор внутри атрибута класса в теге <a> внутри элемента <nav>, чтобы добавить класс "current", чтобы я мог по-разному стилизовать этот элемент nav для страница вашего в настоящее время на. Кроме того, он отлично работает для основной навигации по сайту, поскольку возвращает значение true даже для страниц глубже, чем /technology, например /technology/security, что я и хочу для навигации по всему сайту.

Проблема в том, что я хотел бы использовать аналогичную, но модифицированную версию этого кода при навигации по подразделам, которая будет отображаться только в основных категориях подстраниц.

Так что в этих случаях я хочу, чтобы результат был истинным только при точном совпадении URL. Более конкретно, я хочу исключить родителя (т.е. /technology), даже когда я нахожусь на /technology/security.

Так, как я могу изменить утверждение для оценки таким образом?

Ответы [ 2 ]

4 голосов
/ 21 марта 2012

Функция preg_match будет работать здесь намного лучше, потому что регулярные выражения позволяют сопоставить конец строки с помощью оператора $.

<?php
if(preg_match("%/technology$%", $_SERVER['REQUEST_URI'])){
    echo "current";
}
?>
1 голос
/ 21 марта 2012

Извините, но это пустое, если мне не нравится, вы должны переписать его по адресу:

<?php if (strpos($_SERVER["REQUEST_URI"],"/technology") !== false) { echo "current"; } ?>
...