Introdução ao uso de URL com PHP

Em qualquer linguagem de programação para a web que seja como o PHP, sempre que um usuário inserir uma URL específica no navegador, essa solicitação será passada para o servidor de nomes de domínio específico. Em seguida, o servidor de domínio retornará um endereço IP atribuído e prosseguirá para o servidor de hospedagem que hospeda um blog/site/aplicativo. Em seguida, um navegador solicita uma página do servidor web com a ajuda do endereço IP que é realmente especificado pelo servidor de nomes de domínio. Em seguida, esse servidor Web retornará a página para um endereço IP que está realmente especificado pelo navegador que está solicitando a página. Essa página que apareceu no navegador pode conter muitas outras URLs que podem conter muitas páginas do servidor, muitas imagens, etc. A URL pode ser qualquer coisa como www.educba.com ou qualquer outra coisa parecida.

Funções do PHP que lidam com URL

  • base64_decode — Decodifica dados codificados com MIME base64
  • base64_encode — Codifica dados com MIME base64
  • get_headers — Retorna todos os cabeçalhos enviados pelo servidor em resposta a uma requisição HTTP
  • get_meta_tags — Extrai as informações das tag meta de um arquivo e retorna como uma matriz
  • http_build_query — Gera a string de consulta (query) em formato URL
  • parse_url — Interpreta uma URL e retorna os seus componentes
  • rawurldecode — Decodifica uma URL
  • rawurlencode — Codifica uma URL de acordo com RFC 3986
  • urldecode — Decodifica uma URL codificada
  • urlencode — Codifica uma URL

https://www.php.net/manual/pt_BR/ref.url.php

parse_url()

Interpreta uma URL e retorna os seus componentes

Exemplos

<?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';

var_dump(parse_url($url));
var_dump(parse_url($url, PHP_URL_SCHEME));
var_dump(parse_url($url, PHP_URL_USER));
var_dump(parse_url($url, PHP_URL_PASS));
var_dump(parse_url($url, PHP_URL_HOST));
var_dump(parse_url($url, PHP_URL_PORT));
var_dump(parse_url($url, PHP_URL_PATH));
var_dump(parse_url($url, PHP_URL_QUERY));
var_dump(parse_url($url, PHP_URL_FRAGMENT));

O exemplo acima irá imprimir:

array(8) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(8) "hostname"
  ["port"]=>
  int(9090)
  ["user"]=>
  string(8) "username"
  ["pass"]=>
  string(8) "password"
  ["path"]=>
  string(5) "/path"
  ["query"]=>
  string(9) "arg=value"
  ["fragment"]=>
  string(6) "anchor"
}
string(4) "http"
string(8) "username"
string(8) "password"
string(8) "hostname"
int(9090)
string(5) "/path"
string(9) "arg=value"
string(6) "anchor"

<?php
$url = '//www.example.com/path?googleguy=googley';

// Prior to 5.4.7 this would show the path as "//www.example.com/path"
var_dump(parse_url($url));


//O exemplo acima irá imprimir:

array(3) {
  ["host"]=>
  string(15) "www.example.com"
  ["path"]=>
  string(5) "/path"
  ["query"]=>
  string(17) "googleguy=googley"
}

Funções auxiliares

array_chunk()

Divide um array em pedaços

Exemplo

<?php
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));
print_r(array_chunk($input_array, 2, true));

O exemplo acima irá imprimir:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [2] => c
            [3] => d
        )

    [2] => Array
        (
            [4] => e
        )

)

array_slice()

Extrai uma parcela de um array

Exemplos

<?php
$input = array("a", "b", "c", "d", "e");

$output = array_slice($input, 2);      // retorna "c", "d", e "e"
$output = array_slice($input, -2, 1);  // retorna "d"
$output = array_slice($input, 0, 3);   // retorna "a", "b", e "c"

// Obverse as diferenças nas chaves retornadas
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));

O exemplo acima irá imprimir:

Array
(
    [0] => c
    [1] => d
)
Array
(
    [2] => c
    [3] => d
)
<?php
$input = array(1 => "a", "b", "c", "d", "e");
print_r(array_slice($input, 1, 2));

O exemplo acima irá imprimir:

Array
(
    [0] => b
    [1] => c
)

Exemplo #3 array_slice() com chaves mistas

<?php
$ar = array('a'=>'apple', 'b'=>'banana', '42'=>'pear', 'd'=>'orange');
print_r(array_slice($ar, 0, 3));
print_r(array_slice($ar, 0, 3, true));

O exemplo acima irá imprimir:

Array
(
    [a] => apple
    [b] => banana
    [0] => pear
)
Array
(
    [a] => apple
    [b] => banana
    [42] => pear
)

str_split()

Converte uma string para um array

Exemplos

<?php

$str = "Hello Friend";

$arr1 = str_split($str);
$arr2 = str_split($str, 3);

print_r($arr1);
print_r($arr2);

O exemplo acima irá imprimir:

Array
(
    [0] => H
    [1] => e
    [2] => l
    [3] => l
    [4] => o
    [5] =>
    [6] => F
    [7] => r
    [8] => i
    [9] => e
    [10] => n
    [11] => d
)

Array
(
    [0] => Hel
    [1] => lo 
    [2] => Fri
    [3] => end
)

Procura por um valor em um array e retorna sua chave correspondente caso seja encontrado

Exemplo

<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;

$_GET

Variáveis HTTP GET

Um array associativo de variáveis passadas para o script atual via os parâmetros da URL (também conhecidos como query string). Note que o array não é preenchido apenas para solicitações GET, mas também para todas requisições com uma query string.

Exemplo

index.html

Teste

teste.php

<?php
if(isset($_GET['nome'])){
    echo 'Olá ' . htmlspecialchars($_GET["nome"]) . '!';
}

Desvantagens do método GET

Como alguns dados que serão enviados pelo método GET da linguagem PHP serão exibidos na URL, só será possível marcar a página que está com os valores de consulta específicos da string. O método GET ajudará as solicitações de métodos específicos que podem ser armazenadas em cache e as solicitações do método Get permanecem no histórico do nosso navegador. As solicitações do método Get podem/serão marcadas.

O método POST não envia as variáveis pela URL e assim é mais seguro.

https://www.educba.com/php-get-method/

Exemplos

<?php
$uri = $_SERVER['REQUEST_URI'];
echo $uri; // Outputs: URI

$protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";

$url = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
echo $url; // Outputs: Full URL

$query = $_SERVER['QUERY_STRING'];
echo $query; // Outputs: Query String

https://zetcode.com/php/curl/

Método splitUrl() da classe Router

  // Verificar se a url foi setada
  if (isset($_GET['url'])) {
      // dividir a URL em partes
      $url = trim($_GET['url'], '/'); // A origem deste url é o public/.htaccess
      $url = filter_var($url, FILTER_SANITIZE_URL); // Filtrar a url de caracteres estranhos a uma url
      $url = explode('/', $url); // Criar um array com as aprtes da url: controller/action/params

      $this->urlController = isset($url[0]) ? $url[0] : null; // Criando a $this->urlController com $url[0]
      $this->urlAction = isset($url[1]) ? $url[1] : null; // Criando a $this->urlAction com $url[1]

      unset($url[0], $url[1]);// Limpar $url[0] e $url[1]
      $this->urlParams = array_values($url); // Criando a $this->urlParams com array_values($url)
  }

https://github.com/ribafs/php-router/blob/main/Core/Router.php