Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Tworzenie zmiennych w pętli
pablomaruda
post 27.05.2020, 12:05:08
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 13.01.2014

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


Cześć. Mam prostą wyszukiwarkę słów. W zależności od wybranej długości słowa skrypt generuje formularz o odpowiedniej liczbie pól. Z formularza przychodzą dane o długości słowa i literach, które szukane słowo ma zawierać.
Przykład dla słowa trzyliterowego:
  1. <form action="index.php" method="post">
  2. <input type="text" name="letter1" maxlength="1" value=".">
  3. <input type="text" name="letter2" maxlength="1" value=".">
  4. <input type="text" name="letter3" maxlength="1" value=".">
  5. <input type="hidden" name="iloscliter" value="3">
  6. <input type=submit name="szukaj" value="Szukaj">
  7. </form>

W skrypcie przetwarzającym formularz mam taki kod:
  1. $wordLength = $_POST['iloscliter'];
  2. $plik = file('hasla'.$wordLength.'.txt');
  3.  
  4. $letter1 = mb_strtoupper($_POST['letter1'],"UTF-8");
  5. $letter2 = mb_strtoupper($_POST['letter2'],"UTF-8");
  6. $letter3 = mb_strtoupper($_POST['letter3'],"UTF-8");
  7.  
  8. $wzorzec = '/^'.$letter1.$letter2.$letter3.'/';
  9.  
  10. for($i = 0, $x = count($plik); $i < $x; $i += 3)
  11. {
  12. if(preg_match($wzorzec, $plik[$i]))
  13. {
  14. echo $plik[$i]."<br />";
  15. }
  16. }

Tyle tylko, że to kod napisany z palca. Chciałbym jakoś wygenerować linie 4-8 w zależności od wartości $wordLength. Nie wiem jak to w pętli zapisać.
Go to the top of the page
+Quote Post
nospor
post 27.05.2020, 12:10:14
Post #2





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




zamiast zmiennych na kazda litere, utworz tablice pol

<input type="text" name="letter[]" maxlength="1" value=".">
<input type="text" name="letter[]" maxlength="1" value=".">
<input type="text" name="letter[]" maxlength="1" value=".">

a potem

  1. $wzorzec = '/^'.mb_strtoupper(implode('', $_POST['letter']),"UTF-8")).'/';


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

"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
pablomaruda
post 27.05.2020, 12:57:41
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 13.01.2014

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


Cytat(nospor @ 27.05.2020, 13:10:14 ) *
zamiast zmiennych na kazda litere, utworz tablice pol

<input type="text" name="letter[]" maxlength="1" value=".">
<input type="text" name="letter[]" maxlength="1" value=".">
<input type="text" name="letter[]" maxlength="1" value=".">

a potem

  1. $wzorzec = '/^'.mb_strtoupper(implode('', $_POST['letter']),"UTF-8")).'/';


Zadziałało wyśmienicie! Bardzo dziękuję!

Ale przy okazji zauważyłem pewien problem ze zwracanymi wynikami:

wzorzec: /^R.Ż.M/
wyniki:
REŻIM 👍
REŻYM 👍

wzorzec: /^RE..I/
wynik:
RECKI
REINI
RENNI
REŻIM questionmark.gif

wzorzec: /^RE..M/
wyniki:
REBUM
REIZM
brak reżimu questionmark.gif

Czym może to być spowodowane? Może powinienem przekonstruować wyrażenie? Wszystkie pliki kodowane są w UTF-8.
Go to the top of the page
+Quote Post
nospor
post 27.05.2020, 14:11:10
Post #4





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




ż to 2 znaki temu nie wpadaja ci pod kropke a pod dwie.

Sprobuj modyfikator "u"
https://www.php.net/manual/en/reference.pcr...n.modifiers.php


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

"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
pablomaruda
post 27.05.2020, 14:31:43
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 13.01.2014

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


Cytat(nospor @ 27.05.2020, 15:11:10 ) *
ż to 2 znaki temu nie wpadaja ci pod kropke a pod dwie.

Sprobuj modyfikator "u"
https://www.php.net/manual/en/reference.pcr...n.modifiers.php


Działa! Jestem Ci ogromnie wdzięczny za skuteczną i błyskawiczną pomoc!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 22:55