![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 296 Pomógł: 0 Dołączył: 9.05.2002 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
[php:1:4eb40e2aba]<?php
function wstawemota($linia){ preg_match_all ("|[.*?]|", $linia, $emt); $emt[0] = array_unique($emt[0]); foreach($emt[0] AS $key => $val){ $emot = (ereg_replace("]|[","",$val)); if (file_exists("emots/".$emot.".gif")) { $linia = str_replace($val, "<img src="emots/".$emot.".gif" title="".$emot."">", $linia); } } return $linia; } ?>[/php:1:4eb40e2aba] ... w skrótcie tak wygląda funkcja odpowiadająca za emoty. Problem polega na tym, że chcę wykluczyć duplikaty, tj. żeby zamiast ![]() ![]() ![]() ![]() Z góry dzięki za pomoc. -------------------- audaces fortuna iuvat!
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
Ja nie znam sie za dobrze w wyrazeniach wiec napisze pomysl
![]() Trzeba by zrobic wyrazenie ktore sprawdza czy po usmieszku nie wystepuej znaki typu spacja(lub bez spacji i odrazu) : ; bo od nich zaczyna sie wiekszosc emontkow i tamtej resty nie zamienial tylko ten 1 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 296 Pomógł: 0 Dołączył: 9.05.2002 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
hmm... właściwie kilka emotków może następować po sobie. bardziej chodzi o to, żeby kilka tych samych nie powtarzało się po kolei.
-------------------- audaces fortuna iuvat!
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
Możesz rzucić przykładowym stringiem zawierającym emoty, w tym kilka tych samych następujących po sobie i kilka różnych następujących po sobie. Pokombinuję w wolnym czasie.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 296 Pomógł: 0 Dołączył: 9.05.2002 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat jakiś text [heee][heee] la la la
![]() ![]() ![]() ... dzieki ![]() -------------------- audaces fortuna iuvat!
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
[php:1:87de64d7fb]<?php
$str = "jakiś text [heee][heee] la la la ![]() ![]() $str = preg_replace( "/([.*?])+1/s", '1', $str ); $str = preg_replace_callback( "/[(.*?)]/s", 'repl', $str ); print($str); function repl($match) { if( file_exists( "emots/" . $match[1] . ".gif") ) { return( "<img src="emots/" . $match[1] . ".gif" title="" . $match[1] . "">" ); } else { return False; } } ?>[/php:1:87de64d7fb] Niestety w 2 pregach :/ Da się zrobić na jednym, ale narazie tyle wykombinowałem, jeżeli Ci to odpowiada to spox, a jeśli nie to mów, będe kombinował dalej ale później, bo narazie w robocie siedzę. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 296 Pomógł: 0 Dołączył: 9.05.2002 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
dzięki BzikOS... chyba trzeb pokombinować w innym kierunku... sam nie wiem... Twój kod jest ok, ale przestaje spełniać zadanie, kiedy string wygląda np. tak:
Cytat jakiś text [heee] [heee] la la la [wesoly][czad][skacze] Czyli następujące po sobie emoty są oddzielone spacją... Może założyć, w preg_replace, że między nimi może wystąpić pojedynczy znak...
-------------------- audaces fortuna iuvat!
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
[php:1:12a0ccb35a]<?php
$str = preg_replace( "/([.*?])+[s]{0,}1/s", '1', $str ); ?>[/php:1:12a0ccb35a] Podmień. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 296 Pomógł: 0 Dołączył: 9.05.2002 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dzięki serdeczne! Muszę się poważnie zabrać za wyr. nieregularne, coś mi się zdaje. :)
P.S.: Czy wiesz może jak do składni preg_replace wprowadzić zmienne? To samo co z tymi emotami chcę zrobić z ':)' <- dane o nich mam w array() [php:1:b1122a65b6]<?php $emotsARRAY = array(";(","cry",":D","lol",":(","sad",":o(","sad",":-(","sad",":-)","smile",":o)","smile",":)","smile",":|","wrong","=)","smile3",":p","tongue",";p","tongue",":P","tongue",";)","wink"); ?>[/php:1:b1122a65b6] -------------------- audaces fortuna iuvat!
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
[php:1:46b323d327]<?php
foreach( $emotsARRAY as $aVal ) { $aVal = str_replace( Array('(', ')', '|'), Array('(', ')', '|'), $aVal ); $str = preg_replace( "/($aVal)+s?1{1,}/s", '1', $str ); } ?>[/php:1:46b323d327] Coś takiego? |
|
|
![]()
Post
#11
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Lepiej uzyc preg_quote:
[php:1:24c9cf3423]<?php foreach( $emotsARRAY as $aVal ) { $aVal = preg_quote($aVal, "/"); $str = preg_replace( "/($aVal)+s?1{1,}/s", '1', $str ); } ?>[/php:1:24c9cf3423] -------------------- Brak czasu :/
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 296 Pomógł: 0 Dołączył: 9.05.2002 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
ok. dzięki. myślę, że dam już sobie z tym radę
![]() -------------------- audaces fortuna iuvat!
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 01:11 |