Parse url

Всем привет в этой небольшой статье мы с вами познакомимся с функциями parse_url() и parse_str() которые позволяют разбивать url строку на составляющие элементы. Под составляющими элементами я понимаю (протокол, хост, порт, параметры и т.п)

Допустим у нас есть следующая url строка:

$url_str = "https://webfanat.com:8083/article_id?id=136#136";

И мы хотим разбить ее на фрагменты. Для этого достаточно воспользоваться функцией parse_url().

var_dump(parse_url($url_str));

В данную функцию мы передаем нашу url строку и на выходе получаем ассоциативный массив содержащий следующие пары свойств и значений.

scheme => https

host => webfanat.com

port => 8083

path=> /article_id

query=> id=136

fragment=>136

Как видите вся наша url строка была разбита на составные ее части. Теперь нам достаточно просто обратится к любому ключу массива для получения его содержимого. К примеру мы хотим получить номер порта.

var_dump(parse_url($url_str)['port']);    

В результате нам вернется номер порта. Если нам требуется получить одно или несколько значений фрагментов url строки мы можем в функцию parse_url() передать второй аргумент в виде надстройки.

Пример, получение параметров адресной строки.

var_dump(parse_url($url_str, PHP_URL_QUERY));

Как видите здесь для получения параметров адресной строки мы воспользовались константой PHP_URL_QUERY. Остальные фрагменты url строки мы можем получать точно также по аналогии(PHP_URL_SCHEME — scheme, PHP_URL_PORT — port и т.п.)

Давайте рассмотрим теперь функцию parse_str(). Данная функция позволяет обрабатывать строку параметров url.

$url_str = "https://webfanat.com:8083/article_id?id=136&new=1#136";  $query = parse_url($url_str, PHP_URL_QUERY);  parse_str($query, $output);  var_dump($output);

В саму функцию мы передаем строку параметров url и переменную($output) в которую будет возвращен результат. Отмечу что наличие второго аргумента обязательно!

В итоге у нас в переменную $output записывается ассоциативный массив содержащий пары свойств и значений параметров url строки.

var_dump($output['id']);// значение параметра id    
var_dump($output['new']);// значение параметра new

В общем функцию parse_str() мы можем применять к любым строкам такого формата(?свойство=значение&свойство=значение)

На этом данная статья подошла к концу. Не забывайте оставлять комментарии.

Удачи!

webfanat.com

this is my 404 error page is this ok  or it need improvements

<?php
/**
* 404.php
*
* The template for displaying 404 pages (not found)
*
* @author    BetterStudio
* @package   Publisher
* @version   2.0.2
*/

get_header();

// Shows breadcrumb
if ( publisher_show_breadcrumb() ) {
   
Better_Framework()->breadcrumb()->generate( array(
       

="keyword">=> 'bc-top-style'
   
) );
}

?>
    <div class="content-wrap">
        <main <?php publisher_attr( 'content', '' ); ?>>

            <div class="container layout-1-col layout-no-sidebar">
                <div class="row main-section">

                    <div class="content-column content-404">

                        <div class="row first-row">

                            <div class="col-lg-12 text-404-section">
                                <p class="text-404 heading-typo">404</p>
                            </div>


                            <div class="col-lg-12 desc-section">
                                <h1 class="title-404"><?php publisher_translation_echo( '404_not_found' ); ?></h1>
                                <p><?php publisher_translation_echo( '404_not_found_message' ); ?></p>
                                <div class="action-links clearfix">

                  .
"' + document.referrer + '"><i class="fa fa-angle-double-right"></i> <?php publisher_translation_echo( '404_go_previous_page' ); ?></a></div>');
                                        }
                                    </script>

                                    <div class="search-action-container">
                                        <a href="<?php
; <?php publisher_translation_echo( '404_go_homepage' ); ?>
                                        </a>
                                    </div>
                                </div>
                            </div>

                        </div><!-- .first-row -->

                        <div class="row secon.
?>
                                </div>
                            </div>
                        </div><!-- .second-row -->

                    </div><!-- .content-column -->

                </div><!-- .main-section -->
            </div> <!-- .layout-1-col -->

        </main><!-- main -->
    </div><!-- .content-wrap -->

<?php get_footer(); ?>

https://bramg.net

php.net

Just in case this helps someone, this is a quick and dirty way to add or replace values to your query string, which I found especially useful when modifying urls to allow paging through resultsets.

/**
 * @return string
 * @param string $varName
 * @param string $varVal
 * @param string $uri
 * @desc Returns the a string that is either
 *        $uri if you pass it or the current
 *        uri with the variable name $varName
 *        equal to the value urlencode($varVal)
 *        It replaces a current value if it find
 *        it or adds the variable and value pair
 *        if they are new.
*/
function AddToQuery($varName, $varVal, $uri=null) {
   $result = '';
   $beginning = '';
   $ending = '';
  
   if (is_null($uri)) {//Piece together uri string
       $beginning = $_SERVER['PHP_SELF'];
       $ending = ( isset($_SERVER['QUERY_STRING']) ) ? $_SERVER['QUERY_STRING'] : '';<.

  
   if (strlen($ending) > 0) {
       $vals = array();
       $ending = str_replace('?','', $ending);
       parse_str($ending, $vals);
       $vals[$varName] = $varVal;
       $ending = '';
       $count = 0;
       foreach($vals as $k => $v) {
           if ($count > 0) { $ending .= '&'; }
           else { $count++; }
           $ending .= "$k=" . urlencode($v);
       }
   } else {
       $ending = $varName . '=' . urlencode($varVal);
   }
  
   $result = $beginning . '?' . $ending;
  
   return $result;
}

php.svchat.ru

Что делает функция parse_url в php

Что она делает очень сложно понять начинающему по тем материалам, что есть в сети…(я пишу это для себя, чтобы лучше понимать, но может и вам пригодиться) …давайте поподробнее:

Она разбирает(распарсивает адрес урл) на фрагменты, сразу пример:

$url = 'http://saitsozdanie.ru/php/parse-url-funktsiya.html';

print_r(parse_url($url));
echo "<br>";

echo parse_url($url, PHP_URL_PATH);

Ответ получаем такой:

Array ( [scheme] => http [host] => saitsozdanie.ru [path] => /php/parse-url-funktsiya.html )
/php/parse-url-funktsiya.html

То есть print_r показывает то, что перед нами массив и мы его раскладываем на кусочки, а вторая строчка уже показывает необходимый нам фрагмент, который мы выделили с помощью константы PHP_URL_PATH.

Разберем подробнее что получает parse_url()

Функция parse_url(), как мы уже убедились, получает ассоциативный массив, но он может получать и другие элементы адресной строки:

  • scheme — например, http
  • host
  • port
  • user
  • pass
  • path
  • query — после знака вопроса ?
  • fragment — после знака диеза #

Как мы уже убедились для этого достаточно указать константу, из — Укажите одну из констант: PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_USER, PHP_URL_PASS, PHP_URL_PATH, PHP_URL_QUERY или PHP_URL_FRAGMEN.

!!! Все возвращают string и только PORT — integer.

Тут встретил одно интересное примечание на php.ru

Они пишут — мол эта функция предназначена специально для разбора URL-адресов, а не URI (типа она не работает с относительными путями, а только с абсолютными).

Проверим, как же, эта функция достаточно умная, вот что она вернет при:

Она разбирает(распарсивает адрес урл) на фрагменты, сразу пример:

$url = 'php/parse-url-funktsiya.html';

print_r(parse_url($url));
echo "<br>";

echo parse_url($url, PHP_URL_PATH);

Ответ получаем такой:

Array ([path] => php/parse-url-funktsiya.html )
php/parse-url-funktsiya.html

Так что работать можно…)

 

 

saitsozdanie.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector