Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyrażenie dla preg_match_all
marek71_33
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 2.02.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował fifi209 20.02.2010, 11:47:58
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




~fifi209, ekhm: parse_url+parse_str...
Go to the top of the page
+Quote Post
marek71_33
post
Post #4





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 2.02.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Człowieku, a zaglądałeś do mojego posta?
Go to the top of the page
+Quote Post
marek71_33
post
Post #6





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 2.02.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 00:25