Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] malutki problem
Forum PHP.pl > Forum > PHP
Sylwin
Jak zrobić aby wyciąć część tego adresu "index.php?kat=1&pod=33" i zamienić go na "dodaj.php" questionmark.gif

Problem jest tutaj: ('/index.php(.*?)/') nie wiem jak zrobić żeby od index.php do końca zamieniało...

Wykompinowałem coś takiego:

  1. <?php
  2. $fp='http://www.katalog.szachowisko.pl/index.php?kat=1&amp;pod=33';
  3.  
  4. $pattern2 = array('/index.php(.*?)/');
  5. $replace = array('dodaj.php');
  6. $adres3= preg_replace($pattern2, $replace, $fp, 1);
  7.  
  8. echo"$adres3";
  9. ?>


---
Proszę poprawić temat wątku - tu każdy ma problem. Czasem malutki, czasem całkiem większy.
Tym razem upomnienie, jeżeli tytuł pozostanie bez zmiany - zamknę.
~siemakuba
skowron-line
moze to ci pomoze

  1. <?php
  2. $string = $_SERVER['REQUEST_URI'];
  3.  
  4. $pozycja=strpos($string,"?");
  5. $adres_strony = substr($string,0,$pozycja);
  6. echo'adres strony to'.$adres_strony;
  7. echo'<br />';
  8. echo $adres_strony.'?kat=dodaj.php';
  9. echo'<br />';
  10. $tablica_get = strstr($string,"?");
  11. $tablica_get = str_replace("%20"," ",$tablica_get);
  12. echo $tablica_get;
  13. ?>
Sylwin
Nie za bardzo... Mój kod jest dobry tylko nie zamienia całości od index.php

Co mam dać tutaj żeby zamieniało do konca adresu ('/index.php(.*?)/')
PiratNowegoPokolenia
parse_url
Sylwin
co parse? jak to wstawić do kudu smile.gifquestionmark.gif
PiratNowegoPokolenia
$url = 'http://witaj.pl/index.php';
echo parse_url( $url , PHP_URL_PATH );
da ci
/index.php

choć jakby się uprzeć to:

echo basename( parse_url( $url , PHP_URL_PATH ) )
da ci samo index.php

PS:następnym razem szukaj w manualu
Sylwin
Szukałem w manualu smile.gif Ale nie chodzi mi o inny sposób tylko ten mój ! - wyrażenia regularne:

skrypt ma to:

index.php?kat=1&amp;pod=33

zamienić na to:

dodaj.php

i już winksmiley.jpg

Cos jest nie tak w tej linijce:

$pattern2 = array('/index.php(.*?)/');
Kicok
Cytat
Cos jest nie tak w tej linijce:

$pattern2 = array('/index.php(.*?)/');


A co oznacza kropka w wyrażeniach regularnych? :]
Chociaż z kropką też powinno działać. Błąd leży tutaj: (.*?) Znak zapytania w tej części wyrażenia informuje PHP, że ma dopasować jak najmniej tylko się da znaków, czyli w tym wypadku zero. Gdy pozbędziesz się pytajnika PHP będzie starało się dopasować jak najwięcej tylko się da znaków, czyli dopasuje wszystko do końca adresu URL.

Możesz też użyć znaku dolara (oznaczającego koniec przetwarzanych danych):
  1. <?php
  2. $pattern2 = array('/index.php(.*?)$/');
  3. ?>
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.