Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> znowu preg_replace
ITI
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 4.06.2002
Skąd: Z US - Układ Słoneczny :)

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


Mam problem, szukałem na forum i w google i nigdzie nic nie moge znalezc, co by mi pomoglo go rozwiazac.

Chodzi o to, ze mam tekst, w ktorym umieszczam obrazki korzystajac z tekstu :ico634left: z czego "ico" to rozmiar obrazka, potem jego numer w bazie oraz polozenie (left lub right).

Mam funkcje, ktora ma za zadanie wyswietlic obrazek:

  1. function obrazek($rozmiar,$id,$polozenie) {
  2. global $tab_gal;
  3.  
  4. $query = mysql_query("SELECT foto,nazwa,opis FROM $tab_gal WHERE id='$id' LIMIT 1");
  5. $wynik = mysql_fetch_array($query);
  6.  
  7. $foto = $wynik["foto"];
  8. $nazwa = $wynik["nazwa"];
  9. $opis = $wynik["opis"];
  10.  
  11. return '<div style="float: '.$polozenie.'; padding: 5px;"><img src="galeria/'.$rozmiar.'/'.$foto.'" alt="'.$nazwa.'" title="'.$nazwa.'" border="0"><br>'.$opis.'</div>';
  12. }


W tresci strony uzywam takiego zapytania:

  1. $pattern = "/:([a-zA-Z]+)([0-9]+)([a-zA-Z]+):/";
  2. $replacement = obrazek('$1','$2','$3');
  3.  
  4. $opis_kat = nl2br(preg_replace($pattern, $replacement, $tekst));


Nie chce mi sie obrazek wyswietlac (IMG:style_emoticons/default/sad.gif) tzn. jest taki przypadek,z e jak w kodzie funkcji wpisze sobie, zeby wyswietlalo ID obrazka, to wyswietla poprawnie ten, ktory idzie z preg_replace, ale obrazek sie nie wyswietl (sciezki dobre (IMG:style_emoticons/default/smile.gif) ).
Jak wpisze w $replacement = obrazek('$1','$2','$3') - zamiast $2 jakąś konkretną cyfrę, to wtedy obrazek mi się wyświetla (IMG:style_emoticons/default/sad.gif)

Nawet w przypadku jeżeli kod początkowy będzie :ico634left: to widzę, że id obrazka leci nr 634, ale obrazek sie nie wyswietli, a jak wpisze na stale $replacement = obrazek('$1','634','$3') to wtedy obrazek się wyświetli.

Nie wiem co z tym mam zrobić, bo już po prostu zgłupiałem (IMG:style_emoticons/default/sad.gif) Zazwyczaj sobie radzę z różnymi takimi rzeczami i rzadko szukam pomocy na forach, ale tym razem sytuacja mnie do tego zmusiła (IMG:style_emoticons/default/smile.gif)

Jak ktoś zna jakieś rozwiązanie, będę wdzięczny.
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%)
-----


użyj preg_replace_callback ?
Go to the top of the page
+Quote Post
ITI
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 4.06.2002
Skąd: Z US - Układ Słoneczny :)

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


Dzięki (IMG:style_emoticons/default/smile.gif) Jednak nie było to takie trudne, ale jak się nie wie co stosować i w jakich przypadkach to tak bywa.

A rozwiązałem to w taki sposób:

funkcja:

  1. function obrazek($wynik) {
  2. global $tab_gal;
  3.  
  4. $rozmiar = $wynik[1];
  5. $id = $wynik[2];
  6. $polozenie = $wynik[3];
  7.  
  8. $query = mysql_query("SELECT foto,nazwa,opis FROM $tab_gal WHERE id='$id' LIMIT 1");
  9. $wynik = mysql_fetch_array($query);
  10.  
  11. $foto = $wynik["foto"];
  12. $nazwa= $wynik["nazwa"];
  13. $opis = $wynik["opis"];
  14.  
  15. return '<div style="float: '.$polozenie.'; padding: 5px;"><img src="galeria/'.$rozmiar.'/'.$foto.'" alt="'.$nazwa.'" title="'.$nazwa.'" border="0"><br>'.$opis.'</div>';
  16. }


Kod wyszukiwania:

  1. $pattern = "/:([a-zA-Z]+)([0-9]+)([a-zA-Z]+):/";
  2. $replacement = 'obrazek';
  3. $opis_kat = nl2br(preg_replace_callback($pattern, $replacement, $tekst));


Jeszcze raz wielkie dzięki (IMG:style_emoticons/default/smile.gif)
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: 22.08.2025 - 12:29