Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]str_replace - jak usunąć losowe adresy URL?
Tomek58
post 30.07.2008, 07:52:58
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 30.08.2007

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


Witam!
Jak za pomocą fukncji: str_replace usunąć adresy URL, które mogą się zmieniać? Np. chcę usunąć z tekstu następujące wyrażenie:

Cytat
<div align="right"><a href="java script:okno('opis.html?pr_tele_id=3464008521',775,500,1);">więcej</a>


W którym ID będzie się zmieniać. Jak tego dokonać za pomocą str_replace ?


--------------------
Procesor: 2,4 GHz
Dysk: 180 GB
Ramy: 1538 MB
Grafika: GeForce 256 MB

Go to the top of the page
+Quote Post
nospor
post 30.07.2008, 07:55:32
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




nie da sie. str_replace zamienia stale znane fragmenty. Do tego co chcesz zrobic musisz uzyc wyrazen regularnych i preg_replace


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Tomek58
post 30.07.2008, 08:31:20
Post #3





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 30.08.2007

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


Niestety nie wiem jak zastosować w moim przypadku preg_replace. Znalazłem tabelkę do wyrażeń regularnych:

Cytat
(.*) Dowolny ciąg znaków (.*?) Dowolny najkrótszy ciąg znaków ([0-9]*) Dowolny ciąg cyfr ([0-9]*?) Dowolny najkrótszy ciąg cyfr ([a-zA-Z]*?) Dowolny najkrótszy ciąg znaków malych i wielkich ([0-9]{2,4}) Dwie lub 4 cyfry


I według tego robię:
Cytat
<?PHP

$strText = file_get_contents('strona.html');
$strText = preg_replace('#opis.html?pr_tele_id=([0-9]*)#', 'test', $strText);



echo $strText

?>


I nie zmienia się nic. Nie wiem dlaczego jeśli usunę ## to wyskakuje błąd.


--------------------
Procesor: 2,4 GHz
Dysk: 180 GB
Ramy: 1538 MB
Grafika: GeForce 256 MB

Go to the top of the page
+Quote Post
nospor
post 30.07.2008, 09:59:16
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




? to znak specjalny
czyli nie: #opis.html?pr_tele_id=([0-9]*)#
a: #opis.html\?pr_tele_id=([0-9]*)#

Cytat
Nie wiem dlaczego jeśli usunę ## to wyskakuje błąd.
To znaki rozpoczecia i zakonczenia wyrazenia czy jakos tak. A konkretnie nie ## a dowolne dwa takie same znaki. rownie dobrze moze byc // smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 00:34