URL в массив (независимо от местоположения)

#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/