Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [problem] Wyrażenia regularne
ladovnik
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 25.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


Witam. Zrobiłem w swoich skrypcie parsowanie ikon emocji (emotek). Między innymi znajdują się tam następujące kody emotek:
Kod
:D
:drunk:
:dots:

Funkcja, która parsuje emotki opiera się na preg_eplace" title="Zobacz w manualu PHP" target="_manual i jest ustawiona tak, aby ignorować wielkość liter..

Problem jest taki, że gdy parsowana wiadomość będzie miała następującą treść:
Kod
Ale śmieszne :D Tak poza tym to :dots: A potem :drunk:

Wtedy podmianie ulegnie tekst ":D" oraz ":d" z początku kodu ":dots:" i ":drunk:". Próbowałem odwrócić kolejność parsowania, tzn najpierw :dots i :drunk: a dopiero potem :D, wtedy tez było źle, ponieważ moja funkcja działa tak, że do kodu obrazka dodaje tag ALT i TITLE w którym jest kod emotka np. :dots: i wtedy ten kod zostaje podmieniony tak jak w pierwszym przypadku.

Podejrzewam, że należy użyć negacji w wyrażeniach regularnych do zapisu kodu tych emotków, lecz sam nigdy dobrze nie opanowałem negacji i nie mogę sobie z tym poradzić.

Pozdrawiam,
ladovnik

Ten post edytował ladovnik 28.06.2009, 14:47:20
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




a po co tu wyrazenia regularne?
nie mozesz po prostu uzyc str_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
ladovnik
post
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 25.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


To nic nie zmieni. I tak będzie zamieniało :dots: tak jak w przypadku preg_replace.
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




no to zacznij od zamiany :dots: a dopiero potem bierz sie za : D

przeciez mozesz sam okreslic kolejnosc


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

"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
Wicepsik
post
Post #5





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  1. <?php
  2. function emotki($string) {
  3.  
  4. $emotikony = array(":D" => "1", ":drunk:" => "2", ":dots:" => "3");
  5.  
  6. foreach($emotikony as $tekst => $grafika) $string = str_replace($tekst,$grafika,$string);
  7.  
  8. return $string;
  9. }
  10.  
  11.  
  12. echo emotki('Ale śmieszne biggrin.gif Tak poza tym to :dots: A potem :drunk:');
  13. ?>


Kod
Ale śmieszne 1 Tak poza tym to 3 A potem 2



http://webmade.org/porady/emotikony-buzki-usmieszki-php.php

Ten post edytował Wicepsik 28.06.2009, 14:42:03


--------------------
Go to the top of the page
+Quote Post
ladovnik
post
Post #6





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 25.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


nospor, przeczytaj DOKŁADNIE moją pierwszą wiadomość dry.gif Mówiłem już, że zmiana kolejność w moim przypadku nie pomaga, ze względu na to, że każdy obrazek ma w tagu ALT i TITLE swój kod wypisany dry.gif
Wicepsik, Ty również...

Ten post edytował ladovnik 28.06.2009, 14:46:16
Go to the top of the page
+Quote Post
erix
post
Post #7





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




Pokaż lepiej całą funkcję.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
ladovnik
post
Post #8





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 25.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


A co tu pokazywać? Zwykła pętla dla tablicy z emotkami, a w niej:
  1. <?php
  2. $str=preg_replace('#'.$search.'#i','<img src="'.$file.'" alt="'.$code.'" title="'.$code.'">',$str);
  3. ?>


Dlatego po podmianie emotki :dots: kod wygląda tak:
Kod
<img src="dots.gif" alt=":dots:" title=":dots:">


I nawet, jeśli będę parsował emotkę :dots: przed :D, to i tak będzie źle, bo zostanie podmieniony kod alt=":dots:" title=":dots:". W treści pierwszego posta zauważyłem, że konieczna będzie negacja, aby parsować emotkę :D tylko jeśli nie ma zaraz po niej kodu ots: lub runk:.

Ten post edytował ladovnik 29.06.2009, 10:14:41
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 Aktualny czas: 20.08.2025 - 09:30