Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenie dla preg_match_all
Forum PHP.pl > Forum > Przedszkole
marek71_33
Witam

Proszę o pomoc w napisaniu wyrażenia dla funkcji preg_match_all za pomocą którego wydobędę z adresu
Kod
strona_1.php?id_1=sztuka&id2=200&id_art=300a (...itd)
nazwę strony bez rozszerzenia .php oraz wartości parametrów(to co jest po "=") przy założeniu, że:
w nazwie strony i nazwie parametru mogą być litery, cyfry i znaki typu -_ itp
wartości parametrów mogą być liczbowe lub tekstowe
ilość parametrów nie jest stała (mogą być 2, 3 lub więcej)

siedziałem nad tym całą noc i nic mi nie wyszło
Fifi209
Hmm, strpos - szukasz pierwszego wystąpienia znaku równości, potem substr i jedziesz.

Chyba, że chcesz to w aktualnie wykonywanym skrypcie odczytać (z url):
$_SERVER['QUERY_STRING']
$_SERVER['SCRIPT_NAME']

Masz tutaj działający przykład, wystarczy za string podstawić coś innego (polecam obejrzeć ten przykład).

  1. <?php
  2.  
  3. $string = $_SERVER['REQUEST_URI'];
  4. echo $string.'<br/>';
  5.  
  6. $file_name = substr($string, 1, strpos($string, '?')-1);
  7. echo $file_name.'<br/>';
  8.  
  9. $x = explode('&', substr($string, strpos($string, '?')+1));
  10. $vars=array();
  11.  
  12. foreach ($x as $value) {
  13. $key = substr($value, 0, strpos($value, '='));
  14. $val = substr($value, strpos($value, '=')+1);
  15. $vars[$key] = $val;
  16. }
  17.  
  18. echo '<pre>';
  19. print_r($vars);
  20.  
  21. ?>
erix
~fifi209, ekhm: parse_url+parse_str...
marek71_33
fifi209

Dzięki za pomoc, ale nie o to chodziło. Twój przykład pozwala na pobranie zmiennych, z aktualnie wyświetlanej strony. Ja chce zrobić przyjazne urle i potrzebuje funkcji, która zmodyfikuje link do żądanego formatu, np:
stron-1/2/3/testy.html.

Doszedłem już do tego jak pobrać adres. Teraz potrzebuje czegoś co pozwoli mi wyciągnąć nazwę pliku strony bez rozszerzenia i parametry i zapisać do zmiennej/tablicy.
Wiem, że można to zrobić za pomocą preg_match, tylko jestem cienki z wyrażeń regularnych i nie mogę za nic napisać tego poprawnie
erix
Człowieku, a zaglądałeś do mojego posta?
marek71_33
Zrobiłem coś takiego:
Kod
    function friendly_link($friendly)
    {
    $friendly = parse_url($friendly, PHP_URL_QUERY);
    $friendly = parse_str ($friendly, $tablica);
        $tab = array();
        foreach($tablica as $tab);
      return $tab;
    }

Funkcja działa ale tylko dla linków id=1, natomiast dla id=1&id2=2 już niestety nie. Czego brakuje?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.