Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Minimalizacja skryptu
Forum PHP.pl > Forum > Przedszkole
Agusia
Witajcie, mam pewien problemik i ukłony w stronę osób, które się na tym znają.
Osiągnęłam swój cel, ale zajęło mi to około 350 linijek. Wiem, że da się to rozwiązać w lżejszy sposób.

Założenia:
Skrypt ma sprawdzić zmienną czy jest poprawna pod względem wielkości liter
$zmienna1="JakiSteKsT";
$zmienna2="jakiSteKsT";
Jeżeli nie jest to wykonuje jakąś operacje

  1. <?
  2. $zmienna="JakaZmienna";
  3. echo $zmienna;
  4. echo "</br>____________________________________________</br>";
  5.  
  6. $A=0;$B=0;$C=0;$D=0;$E=0;$F=0;$G=0;$H=0;$I=0;$J=0;$K=0;$L=0;$M=0;$N=0;$O=0;$P=0;$R=0;$S=0;$T=0;$U=0;$W=0;$X=0;$Y=0;$Z=0;
  7. if(ereg("A", $zmienna))
  8. $A=$A+1;
  9. if(ereg("B", $zmienna))
  10. $B=$B+1;
  11. if(ereg("C", $zmienna))
  12. $C=$C+1;
  13. if(ereg("D", $zmienna))
  14. $D=$D+1;
  15. if(ereg("E", $zmienna))
  16. $E=$E+1;
  17. if(ereg("F", $zmienna))
  18. $F=$F+1;
  19. if(ereg("G", $zmienna))
  20. $G=$G+1;
  21. if(ereg("H", $zmienna))
  22. $H=$H+1;
  23. if(ereg("I", $zmienna))
  24. $I=$I+1;
  25. if(ereg("J", $zmienna))
  26. $J=$J+1;
  27. if(ereg("K", $zmienna))
  28. $K=$K+1;
  29. if(ereg("L", $zmienna))
  30. $L=$L+1;
  31. if(ereg("M", $zmienna))
  32. $M=$M+1;
  33. if(ereg("N", $zmienna))
  34. $N=$N+1;
  35. if(ereg("O", $zmienna))
  36. $O=$O+1;
  37. if(ereg("P", $zmienna))
  38. $P=$P+1;
  39. if(ereg("R", $zmienna))
  40. $R=$R+1;
  41. if(ereg("S", $zmienna))
  42. $S=$S+1;
  43. if(ereg("T", $zmienna))
  44. $T=$T+1;
  45. if(ereg("U", $zmienna))
  46. $U=$U+1;
  47. if(ereg("W", $zmienna))
  48. $W=$W+1;
  49. if(ereg("X", $zmienna))
  50. $X=$X+1;
  51. if(ereg("Y", $zmienna))
  52. $Y=$Y+1;
  53. if(ereg("Z", $zmienna))
  54. $Z=$Z+1;
  55.  
  56. $zmienna2="Jakaszmienna";
  57. echo $zmienna2;
  58. echo "</br>____________________________________________</br>";
  59.  
  60. $AA=0;$BB=0;$CC=0;$DD=0;$EE=0;$FF=0;$GG=0;$HH=0;$II=0;$JJ=0;$KK=0;$LL=0;$MM=0;$NN=0;$OO=0;$PP=0;$RR=0;$SS=0;$TT=0;$UU=0;$WW=0;$XX=0;$YY=0;$ZZ=0;
  61. if(ereg("A", $zmienna2))
  62. $AA=$AA+1;
  63. if(ereg("B", $zmienna2))
  64. $BB=$BB+1;
  65. if(ereg("C", $zmienna2))
  66. $CC=$CC+1;
  67. if(ereg("D", $zmienna2))
  68. $DD=$DD+1;
  69. if(ereg("E", $zmienna2))
  70. $EE=$EE+1;
  71. if(ereg("F", $zmienna2))
  72. $FF=$FF+1;
  73. if(ereg("G", $zmienna2))
  74. $GG=$GG+1;
  75. if(ereg("H", $zmienna2))
  76. $HH=$HH+1;
  77. if(ereg("I", $zmienna2))
  78. $II=$II+1;
  79. if(ereg("J", $zmienna2))
  80. $JJ=$JJ+1;
  81. if(ereg("K", $zmienna2))
  82. $KK=$KK+1;
  83. if(ereg("L", $zmienna2))
  84. $LL=$LL+1;
  85. if(ereg("M", $zmienna2))
  86. $MM=$MM+1;
  87. if(ereg("N", $zmienna2))
  88. $NN=$NN+1;
  89. if(ereg("O", $zmienna2))
  90. $OO=$OO+1;
  91. if(ereg("P", $zmienna2))
  92. $PP=$PP+1;
  93. if(ereg("R", $zmienna2))
  94. $RR=$RR+1;
  95. if(ereg("S", $zmienna2))
  96. $SS=$SS+1;
  97. if(ereg("T", $zmienna2))
  98. $TT=$TT+1;
  99. if(ereg("U", $zmienna2))
  100. $UU=$UU+1;
  101. if(ereg("W", $zmienna2))
  102. $WW=$WW+1;
  103. if(ereg("X", $zmienna2))
  104. $XX=$XX+1;
  105. if(ereg("Y", $zmienna2))
  106. $YY=$YY+1;
  107. if(ereg("Z", $zmienna2))
  108. $ZZ=$ZZ+1;
  109. if ($A==$AA){
  110. //jest lux
  111. }
  112. else
  113. {
  114. $zmieniamy="1";
  115. }
  116. if ($B==$BB){
  117. //jest lux
  118. }
  119. else
  120. {
  121. $zmieniamy="1";
  122. }
  123. if ($C==$CC){
  124. //jest lux
  125. }
  126. else
  127. {
  128. $zmieniamy="1";
  129. }
  130. if ($D==$DD){
  131. //jest lux
  132. }
  133. else
  134. {
  135. $zmieniamy="1";
  136. }
  137.  
  138. if ($E==$EE){
  139. //jest lux
  140. }
  141. else
  142. {
  143. $zmieniamy="1";
  144. }
  145.  
  146. if ($F==$FF){
  147. //jest lux
  148. }
  149. else
  150. {
  151. $zmieniamy="1";
  152. }
  153. if ($G==$GG){
  154. //jest lux
  155. }
  156. else
  157. {
  158. $zmieniamy="1";
  159. }
  160. if ($H==$HH){
  161. //jest lux
  162. }
  163. else
  164. {
  165. $zmieniamy="1";
  166. }
  167. if ($I==$II){
  168. //jest lux
  169. }
  170. else
  171. {
  172. $zmieniamy="1";
  173. }
  174. if ($J==$JJ){
  175. //jest lux
  176. }
  177. else
  178. {
  179. $zmieniamy="1";
  180. }
  181. if ($K==$KK){
  182. //jest lux
  183. }
  184. else
  185. {
  186. $zmieniamy="1";
  187. }
  188. if ($L==$LL){
  189. //jest lux
  190. }
  191. else
  192. {
  193. $zmieniamy="1";
  194. }
  195. if ($M==$MM){
  196. //jest lux
  197. }
  198. else
  199. {
  200. $zmieniamy="1";
  201. }
  202. if ($N==$NN){
  203. //jest lux
  204. }
  205. else
  206. {
  207. $zmieniamy="1";
  208. }
  209. if ($O==$OO){
  210. //jest lux
  211. }
  212. else
  213. {
  214. $zmieniamy="1";
  215. }
  216. if ($P==$PP){
  217. //jest lux
  218. }
  219. else
  220. {
  221. $zmieniamy="1";
  222. }
  223. if ($R==$RR){
  224. //jest lux
  225. }
  226. else
  227. {
  228. $zmieniamy="1";
  229. }
  230. if ($S==$SS){
  231. //jest lux
  232. }
  233. else
  234. {
  235. $zmieniamy="1";
  236. }
  237. if ($T==$TT){
  238. //jest lux
  239. }
  240. else
  241. {
  242. $zmieniamy="1";
  243. }
  244. if ($U==$UU){
  245. //jest lux
  246. }
  247. else
  248. {
  249. $zmieniamy="1";
  250. }
  251. if ($W==$WW){
  252. //jest lux
  253. }
  254. else
  255. {
  256. $zmieniamy="1";
  257. }
  258. if ($X==$XX){
  259. //jest lux
  260. }
  261. else
  262. {
  263. $zmieniamy="1";
  264. }
  265. if ($Y==$YY){
  266. //jest lux
  267. }
  268. else
  269. {
  270. $zmieniamy="1";
  271. }
  272. if ($Z==$ZZ){
  273. //jest lux
  274. }
  275. else
  276. {
  277. $zmieniamy="1";
  278. }
  279.  
  280. if($zmieniamy==1)
  281. {
  282. echo "Zmieniamy URLA gdyż zmienne różnią się";
  283. }
  284.  
  285. ?>
  286.  



Ma ktoś jakiś pomysł ?
nospor
Chyba nie ogarniam...

a czemu poprostu nie zrobisz:

if ($zmienna1 != $zmienna2) echo 'Sie roznia';
Crozin
Możesz napisać jakie są założenia tego skryptu? Podaj jakieś przykłady danych wejściowych i wyjściowych.
Agusia
skrypt sprawdza dwie zmienne takie same lecz różniące się małymi i wielkimi literami.
no i jeżeli obydwie są takie same (małe i duże litery się zgadzają) to nie robi nic
jeżeli jest różnica wielkości znaków to zmienna przyjmuje wartość ustaloną
generalnie to działa tylko jest chyba zbyt duże.

Czy skrypt w 1 poście jest tym samym co ?
  1. <?
  2. $zmienna="Cos";
  3. $zmienna2="cos";
  4.  
  5. if($zmienna == $zmienna2)
  6. {
  7. echo "jest ok";
  8. }
  9. else
  10. {
  11. echo "Zmieniamy URLA gdyż zmienne różnią się";
  12. ;}
  13.  
  14. ?>

nospor
No to juz ci podalem rozwiazanie... jedna linia zamiast tego calego Twojego metliku

edit: tak, to jest to samo
KsaR
Cytat
jeżeli obydwie są takie same (małe i duże litery się zgadzają) to nie robi nic


Musisz skorzystać z wbudowanej funkcji strcasecmp, gdyż operatory nie patrzą na wielkość.

  1. if (0 === strcasecmp($zmienna, $zmienna2))
  2. {
  3. # identczne
  4. }
  5. else
  6. {
  7. # różnią się wielkoscia czy ogółem. biggrin.gif
  8. }
Crozin
Chcesz porównać tylko te ~26 znaków (A-Z) czy ogólnie chcesz porównać wszystkie znaki?
Regz
Agusi chodziło o coś takiego:

  1. <?php
  2.  
  3. function URLtoLower()
  4. {
  5.  
  6. $protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === FALSE ? 'http' : 'https';
  7. $host = $_SERVER['HTTP_HOST'];
  8. $script = $_SERVER['SCRIPT_NAME'];
  9. $params = $_SERVER['QUERY_STRING'];
  10.  
  11. $URL = $protocol . '://' . $host . $script . '?' . $params;
  12.  
  13. if (preg_match("/[A-Z]/", $URL))
  14. {
  15. header('Location: '. strtolower($URL));
  16. die();
  17. }
  18. }
  19.  
  20. URLtoLower();
Agusia
@Regz nie zależało mi na Lowerowaniu

---
Jakiś czas temu założyłam serwis zawierający gify i obrazki animowane i niedawno GoogleWebmasterTools wykrył u mnie zduplikowane strony.
Założyłam sobie że urle będą wyglądały w ten sposób
Kod
http://animowane-gify.pl/pobierz_SpieszmysieKochacludzitakszybkoodchodza_714

Problem w tym że jeżeli ktoś gdzieś umieścił odnośnik z małymi literami w linku to google traktował to jako 2 identyczne strony z tym samym contentem = duplicate content.

No i pisząc skrypt i później pytając się Was chciałam przekierować URL do poprawnej wersji z dużymi literami.
Błędne adresy URL naprawione poniższym przykładem. Może jeszcze komuś się przyda.

  1. $URLPOPRAWNY = $seoURL;
  2. $URLAKTYWNY = $_SERVER['REQUEST_URI'];
  3. $URLAKTYWNY = explode("_", $URLAKTYWNY);
  4. $URLAKTYWNYOK = $URLAKTYWNY[1];
  5. $zmienna=$URLPOPRAWNY;
  6. $zmienna2=$URLAKTYWNYOK;
  7. if($zmienna == $zmienna2)
  8. {
  9. //echo "jest ok";
  10. }
  11. else
  12. {
  13. $zmieniamy=1;
  14. ;}
  15. if($zmieniamy==1)
  16. {
  17. echo "Zmieniamy błędnego urla.";
  18. $urlik='poprawnyurl.pl';
  19. echo $urlik;
  20. header("HTTP/1.1 301 Moved Permanently");
  21. header("Location: ".$urlik."");
  22. }


naprawdę dziękuję za pomoc. I życzę wszystkim miłego dnia.
Pyton_000
Cytat(KsaR @ 11.12.2015, 12:13:41 ) *
Musisz skorzystać z wbudowanej funkcji strcasecmp, gdyż operatory nie patrzą na wielkość.

Ekhm....
Zanim napiszesz to sprawdź wink.gif

Kod
php -r "var_dump('ala' === 'Ala');"
bool(false)

php -r "var_dump('ala' === 'ala');"
bool(true)

PHP 5.6.11
KsaR
Cytat(Pyton_000 @ 11.12.2015, 12:55:48 ) *
Ekhm....
Zanim napiszesz to sprawdź wink.gif

Kod
php -r "var_dump('ala' === 'Ala');"
bool(false)

php -r "var_dump('ala' === 'ala');"
bool(true)

PHP 5.6.11

Masz racje, bo uzyles operatora === ktory sprawdza takze typ..
http://stackoverflow.com/questions/3333353...using-vs-strcmp

Co do cytatu to gdzies musieli zle napisac ale nie moge odszukac gdzie, z glowy bym tego nie wymyslil. A moze jakies glebsze testy by trzeba np. Z emoji, ruskimi znakami itd. Ale pewnosci juz nie mam tongue.gif

A tak napisalem przy okazji bo nad moim postem byl operator == zamiast === tak czy inaczej biggrin.gif
kapslokk
Cytat
Masz racje, bo uzyles operatora === ktory sprawdza takze typ..

Przecież w obu przypdkach typ jest ten sam - string.
Poza tym, u mnie z 2 = też działa:

vagrant@debian-jessie:~$ php -r "var_dump('ala' == 'Ala');"
Command line code:1:
bool(false)
vagrant@debian-jessie~$ php -r "var_dump('ala' == 'ala');"
Command line code:1:
bool(true)
KsaR
kapslokk a sprawdziles link ktory dalem?
Tam bylo tez cos takiego (odpal to)

  1. <?php
  2.  
  3. var_dump('0XAB' == '0xab');
  4. var_dump('0XAB' === '0xab');


cool.gif, jest string? - jest.
Tak więc operatory jak widać też coś robią :-P

EDIT.
Jak dodalem jeszcze do testu
var_dump(0 === strcasecmp('0XAB', '0xab'));
To wygrywa samo ===, biggrin.gif ale gdzies na jakims blogu tak czy inaczej tak widzialem, nie pamietam jakie stringi byly porownywane tongue.gifP

Edit 2.
http://stackoverflow.com/questions/3506706...ring-comparison
Tu jest tez ze
Cytat
== is case sensitive.

You can use strcasecmp for case insensitive comparison

....
Pyton_000
Ba...
  1. php -r "var_dump("0XAB" === "0xab");"
  2. bool(true)


haha.gif
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.