Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem preg_replace!
Forum PHP.pl > Forum > PHP
M@k
Witam

Jestem z wami na forum już od dawna, i zawsze jakos radziłem sobie sam, czesto po przeczytaniu wskazówek na forum, jednakże dzisiaj nie daje rady sam sobie z moim problemem

Kurka walcze z tym już drugi dzień i nie chce mi działać lub działa zle

A problem jest taki.
Mam sobie scieżki do zdjeć w takiej postaci np.

src="/ssets/images/peil.gif"

I chciałbym, (ja kombinuje za pomoca preg_replace ale mi nie działa) wydobyć z tego peil.gif i dodać do tego inna scieżka, jakas tam wskazana przezemnie. Problem zaczyna sie bo te scieżki i nazwy plików sie zmieniaja, i mi nie wychodzi napisanie takiego warunku.
Myslałem aby złapać sie tego scr=” i jakos kropki miedzy gif. Ale nic mi nie działa.

Bede wdzieczny za każda pomoc lub podpowiedz
Pozdrawiam
Luciano
Ja bym proponowal dosyc latwe rozwiazanie,
najpierw przy pomocy regexpa wyciagnac to co jest w src=" " czyli (zgaduje)

  1. <?php
  2. $reg = 'src="(.*?)"'
  3. ?>


teraz w zmiennej masz cos ala 'sciezka/sciezka/plik.gif' rozbij to explodem

  1. <?php
  2. $tab = explode('/',$zmienna)'
  3. ?>


i w tablicy $tab ostatni element tablicy to nazwa pliku
M@k
Tak jest to pewne rozwiązanie, ale jest pewien problem bo nie wiadomo ile może być takich ścieżek i do tego musiała by być jakaś pętla. Bo w tej chwili zamieni tylko jedną. No właśnie ale nie wiadomo by było na ile taką pętlę ustawić. Wydaje mi się że najlepszym właśnie rozwiązaniem było by użycie preg_replace w tedy nas nie interesuje ile będzie wszystko by zamienił. Problem jest z napisaniem odpowiedniego warunku.

Pozdrawiam
Luciano
jaka petla ? na ostatni element tablicy ? nie potrzebujesz petli $tablica[count($tablica)-1] i masz ostatni element
M@k
Może zle się wyraziłem. Chodzi o to ze tych ścieżek może być np. 10 do zamiany a może być 5 i mogą być różne, teraz zamieni ścieżkę do jednego pliku a nie w całym dokumencie.

To by musiała być regułka jakaś ogólna obojętnie ile do zmiany i obojętnie jakie sciezki do zamiany. Właśnie z tym cały czas walczę i nic mi nie chce działać.
Luciano
Faktycznie przyznaje ze nie zrozumialem pytania. Moze zrobic to w 2 krokach najpierw odczytac wszystkie sciezki i stworzyc tablice co zastapic czym a potem w drugim korku wykonac repleace
devnul
  1. <?php
  2. string=preg_replace('#src="(.*?)/([^/]*.[a-z]*)"#si','src="twojascerzka/2"',$string);
  3. ?>

pisane z palca ale powinno dzialac
M@k
devnul Rkingsmiley.png

Dzięki wielkie kurka jesteś wielki ja z tym dwa dni walczyłem. A teraz działa pięknie o to mi chodziło.

Kurka ale mam znów problem jak ograniczyć tylko do plików gif. Nazwa jak teraz dowolna ale ma zamieniać tylko pliki gif. Bo niby wydaje się proste ale nie działa mi.


NIKT nie wie jak to można zmodyfikować sadsmiley02.gif
darektbg
Cytat(M@k @ 13.04.2007, 12:55:08 ) *
Kurka ale mam znów problem jak ograniczyć tylko do plików gif. Nazwa jak teraz dowolna ale ma zamieniać tylko pliki gif.



  1. <?php
  2. string=preg_replace('#src="(.*?)/([^/]*.[gif]*)"#si','src="twojascerzka/2"',$string);
  3. ?>


powinno działać ;-)
devnul
@darektbg: to co zamiesciles zlapie też pliki z rozszerzeniem .gifgif jak i samo g, f, i oraz ggg itd
rozwiązanie:
  1. <?php
  2. $string=preg_replace('#src="(.*?)/([^/]*.gif)"#si','src="twojascerzka/2"',$string);
  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.