Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrazenia regurlarne i znaki "!"
Forum PHP.pl > Forum > Przedszkole
holee
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.
FiDO
  1. <?php
  2.  
  3. $tresc = preg_replace('#!!!*#', '!!!', $tresc);
  4.  
  5. ?>
holee
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
FiDO
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. ?>
holee
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
FiDO
Pokaz jak dodajesz ten komentarz (lacznie z tym kawalkiem zamiany wykrzyknikow itp) i jaka tresc wpisujesz do tego komentarza, ktora Ci dziala nieprawidłowo.
holee
  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.
FiDO
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.
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.