Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrazenia regurlarne i znaki "!"
holee
post 29.07.2005, 09:56:34
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Chełm

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


Mam taki problem. Mam na stronie fajny skrypcik do dodwania komentarzy, ale wkurza mnie to, ze ludzie wpisuja mnostwo znakow "!" po rzad, czyli exclamation.gif!!!!!!!!!!!!!!!!!!!!!!!!!!!
Nie wiem po co oni to robia, ale to jest ochydne, pewnie sie ze mna zgodzicie ;-)
Probowalem troche sam dzialac, ale za bardzo mi to nie wychodzilo (nie bardzo to za duzo powiedziane, ja w ogle nie wiem jak to powinno wygladac mimo lektury).
Zeby kod tak dzialal ze gdy uzttkownik doda wiecej niz 3 znaki "!" to automatycznie skroci mu do 3 znakow.
A jak doda 2 znaki "!" to doda jeszcze jeden zeby bylo ich 3.
Prosze o pomoc bo sam sobie nie poradze.


--------------------
I pamiętaj lepsze jutro było wczoraj a więc porzuć wszelką nadzieję.
Tanie Winka - www.wina.tk
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
FiDO
post 29.07.2005, 10:28:31
Post #2





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%)
-----


  1. <?php
  2.  
  3. $tresc = preg_replace('#!!!*#', '!!!', $tresc);
  4.  
  5. ?>


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
holee
post 29.07.2005, 11:40:48
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Chełm

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


Ok. wielkie dzieki, dziala jak cholera, ale mam jeszcze jedno pyatnie:
Jak zrobic cos takiego tylko ze juz ze znakami "?" i "."
bo jak zrobie identycznue, tylko ze pozamieniam znaki to mi sie kaszani. dry.gif


--------------------
I pamiętaj lepsze jutro było wczoraj a więc porzuć wszelką nadzieję.
Tanie Winka - www.wina.tk
Go to the top of the page
+Quote Post
FiDO
post 29.07.2005, 18:19:01
Post #4





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%)
-----


Bo to sa znaki specjalne uzywane w regexpach, wiec trzeba je poprzedzic backslashem (Jak nie wiesz, ktore to najbezpieczniej przepuscic przez preg_quote" title="Zobacz w manualu PHP" target="_manual).
Mozna tez machnac wszystko za jednym razem:
  1. <?php
  2.  
  3. // znaki, ktore maja byc ograniczone do 3
  4. $znaki = array('!', '?', '.');
  5.  
  6. $re = implode('|', array_map('preg_quote', $znaki));
  7. $tresc = &#092;"! !! !!! !!!! !!!!! ? questionmark.gif questionmark.gifquestionmark.gifquestionmark.gif questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif . .. ... .... ......\";
  8.  
  9. $tresc = preg_replace('#('.$re.'){2,}#e', 'str_repeat(\"1\", 3)', $tresc);
  10.  
  11. ?>


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
holee
post 29.07.2005, 20:24:38
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Chełm

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


Ok, zrobilem tak jak napisales lae nie dziala do konca.
jak dodam komentarz do mi sie pierdzieli i zamiast wpisanego komentarza dodaje mi :
exclamation.gif!!!!!!!!!!!!!?questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif................

co jest nie tak rolleyes.gif


--------------------
I pamiętaj lepsze jutro było wczoraj a więc porzuć wszelką nadzieję.
Tanie Winka - www.wina.tk
Go to the top of the page
+Quote Post
FiDO
post 30.07.2005, 12:05:55
Post #6





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%)
-----


Pokaz jak dodajesz ten komentarz (lacznie z tym kawalkiem zamiany wykrzyknikow itp) i jaka tresc wpisujesz do tego komentarza, ktora Ci dziala nieprawidłowo.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
holee
post 30.07.2005, 13:07:48
Post #7





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 26.05.2004
Skąd: Chełm

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


  1. <?
  2. $DATADIR=&#092;"../front/koment/data/\";
  3. $FORMAT1=&#092;"<table border=\"0\" width=\"100%\" cellspacing=\"1\" cellpadding=\"4\"><tr bgcolor=\"#800000\"><td width=\"65%\"><b>%imie%</b>&nbsp;%email%%gg%<hr style=\"color:#A0522D;\" noshade size=\"1\" width=\"100%\"></td><td align=\"right\" width=\"35%\">%data%</td></tr><tr bgcolor=\"#800000\"><td colspan=\"2\" width=\"100%\">%tekst%<br><br></td></tr></table>\"; 
  4. $FORMAT2=&#092;"<table border=\"0\" width=\"100%\" cellspacing=\"1\" cellpadding=\"4\"><tr bgcolor=\"#8b0000\"><td width=\"65%\"><b>%imie%</b>&nbsp;%email%%gg%<hr style=\"color:#A0522D;\" noshade size=\"1\" width=\"100%\"></td><td align=\"right\" width=\"35%\">%data%</td></tr><tr bgcolor=\"#8b0000\"><td colspan=\"2\" width=\"100%\">%tekst%<br><br></td></tr></table>\"; 
  5. // --------------------------------------------------------
  6.  
  7. //$commentID=\"a$commentID\";
  8.  
  9. function displayComments()
  10. {
  11. global $commentID, $start, $DATADIR, $FORMAT1, $FORMAT2;
  12.  
  13. if(strstr($commentID, &#092;"/\"))
  14. return;
  15.  
  16.  if(!file_exists($DATADIR.$commentID))
  17. return;
  18.  
  19.  
  20. $file=fopen($DATADIR.$commentID, &#092;"r\");
  21. flock($file, 1);
  22.  
  23. $i=0;
  24.  
  25. while(!feof($file))
  26. {
  27. $imie=chop(fgets($file, 1000));
  28. $email=chop(fgets($file, 1000));
  29. $gg=chop(fgets($file, 1000));
  30. $data=chop(fgets($file, 1000));
  31. $comment=chop(fgets($file, 100000));
  32.  
  33. if(feof($file))
  34. break;
  35.  
  36. //------Koloruje co drugi wiersz wyniku
  37. if($i%2) 
  38. $display=$FORMAT1; 
  39. else 
  40. $display=$FORMAT2; 
  41. //--------------------------------------
  42.  
  43. if ($email == $f_email)
  44. {
  45. $mailto = &#092;" \";
  46. }
  47.  
  48. if ($gg == $f_gg)
  49. {
  50. $ggto = &#092;" \";
  51. }
  52.  
  53. if($email)
  54. $mailto=&#092;" :: <a href=\"mailto:$email?subject=Mail ze strony wina.tk\"><img src=\"../obrazki/post.gif\" title=\"mailto:$email\" valign=\"middle\" style=\"margin:3px;\" alt=\"\"></a>\";
  55.  
  56. if($gg)
  57. $ggto=&#092;" :: <a href=\"gg:$gg\"><img src=\"http://www.gadu-gadu.pl/users/status.asp?id=$gg&styl=1\" title=\"gg:$gg\" valign=\"middle\" style=\"margin:3px;\" alt=\"\"></a>\";
  58.  
  59. $display=str_replace(&#092;"%imie%\", $imie, $display);
  60. $display=str_replace(&#092;"%email%\", $mailto, $display);
  61. $display=str_replace(&#092;"%gg%\", $ggto, $display);
  62. $display=str_replace(&#092;"%data%\", $data, $display);
  63. $display=str_replace(&#092;"%tekst%\", $comment, $display);
  64.  
  65. //echo($display);
  66. $array[]=$display; 
  67.  
  68. $i++; 
  69.  } 
  70.  
  71. //funkcja array_reverse odpowiada za segregowanie według daty dodania komentarza
  72. $komentarze=array_reverse($array); 
  73. foreach($komentarze as $komentarz) echo $komentarz; 
  74.  flock($file, 3); 
  75.  fclose($file); 
  76. } 
  77. ?>
  78.  
  79. <?  
  80. if($commentaction==&#092;"add\")
  81. {
  82. $file=fopen($DATADIR.$commentID, &#092;"a\");
  83. flock($file, 2);
  84.  
  85.  
  86. //dodaje kropke na koniec i wywala <br>
  87. $f_tresc = eregi_replace('([a-zA-Z0-9])$', '1.', trim($f_tresc));
  88.  
  89. // znaki, ktore maja byc ograniczone do 3
  90. $znaki = array('!', '?', '.');
  91. $re = implode('|', array_map('preg_quote', $znaki));
  92. $f_tresc = &#092;"! !! !!! !!!! !!!!! ? questionmark.gif questionmark.gifquestionmark.gifquestionmark.gif questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif . .. ... .... ......\";
  93. $f_tresc = preg_replace('#('.$re.'){2,}#e', 'str_repeat(\"1\", 3)', $f_tresc);
  94.  
  95.  $f_tresc=str_replace(&#092;"n\", \"<br>\", $f_tresc);
  96.  $f_tresc=str_replace(&#092;"r\", \"\", $f_tresc);
  97.  $f_imie=str_replace(&#092;"n\", \"<br>\", $f_imie);
  98.  $f_imie=str_replace(&#092;"r\", \"\", $f_imie);
  99.  $f_email=str_replace(&#092;"n\", \"<br>\", $f_email);
  100.  $f_email=str_replace(&#092;"r\", \"\", $f_email);
  101.  
  102. //strtolower() - zmienia cały tekst na małe litery
  103. //ucfirst() - zmienia pierwszą literę tekstu na dużą
  104.  $f_tresc=strtolower($f_tresc);
  105.  $f_tresc=ucfirst($f_tresc);
  106.  
  107.  $f_tresc = wordwrap($f_tresc, 50, &#092;" \", 1); 
  108.  
  109. //zmienia litery po kropkach na duze  
  110. $zdania = explode('.', $f_tresc); 
  111. for($i=0;$i<count($zdania); $i++){ 
  112. $zdania[$i] = ucfirst(trim($zdania[$i])); 
  113. } 
  114. $f_tresc = implode('. ', $zdania); 
  115.  
  116. //zmienia litery po ! na duze  
  117. $zdania = explode('!', $f_tresc); 
  118. for($i=0;$i<count($zdania); $i++){ 
  119. $zdania[$i] = ucfirst(trim($zdania[$i])); 
  120. } 
  121. $f_tresc = implode('! ', $zdania);
  122.  
  123. //zmienia litery po ? na duze  
  124. $zdania = explode('?', $f_tresc); 
  125. for($i=0;$i<count($zdania); $i++){ 
  126. $zdania[$i] = ucfirst(trim($zdania[$i])); 
  127. } 
  128. $f_tresc = implode('? ', $zdania); 
  129.  
  130. $f_tresc = str_replace(&#092;"! ! !\",\"!!!\",$f_tresc);
  131. $f_tresc = str_replace(&#092;"! ! ! !\",\"!!!\",$f_tresc);
  132. $f_tresc = str_replace(&#092;"! ! ! ! !\",\"!!!\",$f_tresc);
  133. $f_tresc = str_replace(&#092;"! !\",\"!!\",$f_tresc);
  134. $f_tresc = str_replace(&#092;"? ? ?\",\"?questionmark.gif\",$f_tresc);
  135. $f_tresc = str_replace(&#092;"? ?\",\"??\",$f_tresc);
  136. $f_tresc = str_replace(&#092;"!!\",\"!!!\",$f_tresc);
  137. $f_tresc = str_replace(&#092;"!!!!\",\"!!!\",$f_tresc);
  138. $f_tresc = str_replace(&#092;"!!!!!\",\"!!!\",$f_tresc);
  139. $f_tresc = str_replace(&#092;"!!!!!!\",\"!!!\",$f_tresc);
  140. $f_tresc = str_replace(&#092;"..\",\".\",$f_tresc);
  141. $f_tresc = str_replace(&#092;". . . .\",\"...\",$f_tresc);
  142. $f_tresc = str_replace(&#092;". . .\",\"...\",$f_tresc);
  143. $f_tresc = str_replace(&#092;". . . . .\",\"...\",$f_tresc);
  144.  
  145.  
  146. $f_tresc = str_replace(&#092;". .\",\".\",$f_tresc);
  147.  
  148.  
  149.  
  150.  $f_imie=strtolower($f_imie);
  151.  $f_imie=ucwords($f_imie);  
  152.  
  153.  
  154. //replace slashes
  155. $f_tresc = ereg_replace(&#092;"'\", \"'\", $f_tresc);
  156. $f_tresc = ereg_replace('\"', &#092;"\"\", $f_tresc);
  157. $f_tresc = ereg_replace(&#092;"n\", \"<br>\", $f_tresc);
  158.  
  159. $f_imie = ereg_replace(&#092;"'\", \"'\", $f_imie);
  160. $f_imie = ereg_replace('\"', &#092;"\"\", $f_imie);
  161. $f_imie = ereg_replace(&#092;"n\", \"<br>\", $f_imie);
  162.  
  163.  
  164.  fputs($file, $f_imie);
  165. fputs($file, &#092;"n\");
  166.  
  167.  fputs($file, $f_email);  
  168. fputs($file, &#092;"n\");
  169.  
  170. fputs($file, $f_gg);  
  171. fputs($file, &#092;"n\");
  172. //data w postaci np. 1 styczeń 2004 r.
  173. $godzina = date(&#092;"H:i\");
  174. $dzien = date(&#092;"d\");
  175. $miesiac = date(&#092;"m\");
  176. $rok = date(&#092;"Y\");
  177. if ($miesiac == 1) {$miesiac = &#092;"stycznia\";}
  178. if ($miesiac == 2) {$miesiac = &#092;"lutego\";}
  179. if ($miesiac == 3) {$miesiac = &#092;"marca\";}
  180. if ($miesiac == 4) {$miesiac = &#092;"kwietnia\";}
  181. if ($miesiac == 5) {$miesiac = &#092;"maja\";}
  182. if ($miesiac == 6) {$miesiac = &#092;"czerwca\";}
  183. if ($miesiac == 7) {$miesiac = &#092;"lipca\";} 
  184. if ($miesiac == 8) {$miesiac = &#092;"sierpnia\";}
  185. if ($miesiac == 9) {$miesiac = &#092;"września\";}
  186. if ($miesiac == 10) {$miesiac = &#092;"paĽdziernika\";}
  187. if ($miesiac == 11) {$miesiac = &#092;"listopada\";}
  188. if ($miesiac == 12) {$miesiac = &#092;"grudnia\";}
  189. $data = &#092;"$godzina; $dzien $miesiac $rok r.\";
  190.  fputs($file, $data);
  191. fputs($file, &#092;"n\");
  192.  fputs($file, $f_tresc);
  193. fputs($file, &#092;"n\");
  194.  
  195. flock($file, 3);
  196. fclose($file);
  197. $file=chmod(&#092;"$DATADIR.$commentID\", 0777);
  198. header(&#092;"Location: ../opis/index.php?id=$commentID\");
  199.  
  200. }
  201. ?>


to jest kod pliku kom.php .
gdzie $f_tresc to nazwa <textarea>

i teraz wpisuje np.
a!!!!!!!!!!!!
b?questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif
c............

i zostaje dodane "!!!!!!!!!!!!!!!?questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif................"

wiem ze sporo tego kodu ale staralem sie poierdoly pousuwac zeby bylo Ci latwiej.

Ten post edytował holee 30.07.2005, 13:09:12


--------------------
I pamiętaj lepsze jutro było wczoraj a więc porzuć wszelką nadzieję.
Tanie Winka - www.wina.tk
Go to the top of the page
+Quote Post
FiDO
post 31.07.2005, 17:17:32
Post #8





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%)
-----


Wywal ta linijke:
  1. <?php
  2. $f_tresc = &#092;"! !! !!! !!!! !!!!! ? questionmark.gif questionmark.gifquestionmark.gifquestionmark.gif questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif . .. ... .... ......\";
  3. ?>

Ja to dalem tylko do testu.


--------------------
Brak czasu :/
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 - 09:12