#php
#php
Вопрос:
Мне нужно поместить URL (что-то вроде mysite.com/this/is/my/url) в массив таким образом, что если сам сайт находится во вложенной папке (что-то вроде mysite.com/a-folder/this/is/my/url ) тогда он не поместил бы «a-folder» в этот массив, и если mod_rewrite не включен, это не заняло бы index.php либо. Я знаю, как поместить URL в массив, но я понятия не имею, как исключить из него элементы. Приветствуется любая помощь.
Моей конечной целью было бы использовать массив вместо $ _GET , но поскольку массив изменяется, когда сайт находится во вложенной папке root, с mod_rewrite или без него, это не оправдало бы моих ожиданий. Мне нужно иметь возможность создать массив, который не изменяет / this / is / my / url, поэтому, когда я, например, выполняю echo $ arr [‘0’], он возвращает «this» вместо «a-folder» или «index.php «.
Комментарии:
1. Я плохо объяснился или просто невозможно исключить объекты из массива?
2. Кажется, что ваш подход соответствует только
array()
… странно . Почему бы не использовать функцию или объектный метод с некоторой логикой для определения характеристик вашего конечного массива?3. Я объяснил немного больше в исходном вопросе, возможно, теперь вы понимаете мою точку зрения.
4. Вы пытаетесь создать универсальное приложение, которое будет функционировать так, как если бы mod_rewrite был включен, даже если это не так?
5. Да, это почти именно то, к чему я стремлюсь. Но это немного больше, чем просто mod_rewrite.
Ответ №1:
Вы можете использовать любое количество строковых функций (stristr, strpos и т.д.).
Вы также могли бы попробовать regex, но я думаю, что в целом согласны с тем, что это перебор.
Но, не понимая вашего вопроса, это лучшее, что я могу сделать.
Редактировать: Все еще немного запутан, но, может быть, это?
foreach($array as $key=>$url) {
if(strpos($url, 'what you are looking for')) { unset($array[$key]); }
}
Комментарии:
1. Я объяснил немного больше в исходном вопросе, возможно, теперь вы понимаете мою точку зрения.
2. Я все еще действительно не понимаю, что вы ищете. Похоже, вы хотите сохранить массив каждой вложенной папки в переменной сеанса. взорвать(mysite.com/this/is/my/url, ‘/’), чтобы получить массив, а затем использовать цикл foreach, который я предоставил, чтобы избавиться от всего, что вам не нужно.
3. O ХОРОШО, как я и оставил комментарий 🙂
4. Нет. Поскольку URL-адрес сайта берется из $_SERVER[‘REQUEST_URI’] и затем помещается в массив, массив может измениться, когда (например) вместо корневой папки сайт находится в подпапке, и в этом случае он будет включать имя этой папки в массив, делая этот массив совершенно бесполезным. Но этот foreach приводит меня именно туда, куда я хочу.
5.
stpos()
отсутствует r. Иstrpos()
принимает 2 или 3 аргумента. Как правило, полезно включать ссылку на страницу документа PHP для любой функции, на которую ссылается сообщение. Поскольку PHP имеет отличную документацию, вам просто нужно поместить имя функции послеhttp://www.php.net/