Poprzednia rewizja po obu stronach
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:paw:lab_paw_php_1 [2023/12/10 14:58] wojnicki [Ćwiczenie 3: Słownik krzyżówkowy] |
pl:paw:lab_paw_php_1 [2024/12/15 14:04] (aktualna) wojnicki [Informacje dodatkowe: Pliki ze strukturą] |
Umieść w w/w katalogu (''~/public_html'', tylda (''~'') oznacza nazwę katalogu domowego użytkownika) plik ''licze.php'' z następującą zawartością (użyj wspomnianych we wstępie narzędzi do przesyłania plików za pomocą protokołu //ssh/sftp//): | Umieść w w/w katalogu (''~/public_html'', tylda (''~'') oznacza nazwę katalogu domowego użytkownika) plik ''licze.php'' z następującą zawartością (użyj wspomnianych we wstępie narzędzi do przesyłania plików za pomocą protokołu //ssh/sftp//): |
| |
<code php p1.php> | <code php licze.php> |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| |
Proszę przygotować stronę PHP ''wynik.php'' następującej treści: | Proszę przygotować stronę PHP ''wynik.php'' następującej treści: |
<code php p2.php> | <code php wynik.php> |
<?php | <?php |
echo 'Zawartość _GET: '; | echo 'Zawartość _GET: '; |
</code> | </code> |
| |
Sprawdź w [[http://php.net/manual/pl/index.php|Manualu]] do czego służy finkcja ''print_r()''. | Przetestuj działanie w/w formularza, w szczególności zwróć uwagę na adres i wynik w przeglądarce po naciśnięciu przycisku //wyślij//. |
| |
Aby dostać się do poszczególnych zmiennych w tablicach należy użyć składni: ''$_NAZWA['pole']''. Istnieje również tablica ''$_REQUEST'', zawierająca sumę zbiorów reprezentowanych przez ''$_GET'' oraz ''$_POST''. | Spróbuj umieścić w/w skrypt oraz formularz w tym samym pliku, np. ''wynik1.php''. |
| |
| **UWAGA:** aby dostać się do poszczególnych zmiennych w tablicach należy użyć składni: ''$_NAZWA['pole']''. Istnieje również tablica ''$_REQUEST'', zawierająca sumę zbiorów reprezentowanych przez ''$_GET'' oraz ''$_POST''. |
| |
**UWAGA:** powyższy kod PHP generuje stronę, która domyślnie interpretowana jest przez przeglądarkę jako strona XHTML. Oczywiście, nie zawiera ona niezbędnych elementów, więc jest zdecydowanie niezgodna ze standardem! Rozwiązaniem tego problemu byłoby dodanie przed i za blokiem ''<?php ... ?>'' odpowiednich elementów (html, head, body...), lub poinformowanie przeglądarki, że jest to zwykły plik tekstowy. Można to uczynić wysyłając odpowiedni nagłówek HTTP przy pomocy funkcji [[http://www.php.net/manual/pl/function.header.php|header]]: | **UWAGA:** powyższy kod PHP generuje stronę, która domyślnie interpretowana jest przez przeglądarkę jako strona XHTML. Oczywiście, nie zawiera ona niezbędnych elementów, więc jest zdecydowanie niezgodna ze standardem! Rozwiązaniem tego problemu byłoby dodanie przed i za blokiem ''<?php ... ?>'' odpowiednich elementów (html, head, body...), lub poinformowanie przeglądarki, że jest to zwykły plik tekstowy. Można to uczynić wysyłając odpowiedni nagłówek HTTP przy pomocy funkcji [[http://www.php.net/manual/pl/function.header.php|header]]: |
Przykładowy algorytm: | Przykładowy algorytm: |
- odczytaj 1 wyraz z pliku, | - odczytaj 1 wyraz z pliku, |
- sprawdź czy pasuje do wzorca porónując każdą literę, jeżeli tak zwróć wyraz, idź do 1. | - sprawdź czy pasuje do wzorca porównując każdą literę (w pętli), jeżeli tak zwróć wyraz, idź do 1. |
| |
Uwaga na UTF8! | Uwaga na UTF8! |
echo mb_strlen($str); // zwróci 3 | echo mb_strlen($str); // zwróci 3 |
echo $str[1]; // nie zwróci "ó" :( | echo $str[1]; // nie zwróci "ó" :( |
$str_array=preg_split('//u', $str, null, PREG_SPLIT_NO_EMPTY); // konwersja do tablicy zgodna z UTF8 | $str_array=mb_str_split($str); // konwersja do tablicy zgodna z UTF8 |
$str_array=mb_str_split($str); // alternatywa dla powyższego, bardziej czytelna | |
echo $str_array[1]; // zwróci "ó" | echo $str_array[1]; // zwróci "ó" |
</code> | </code> |
| |
Z kolei mniej skomplikowane struktury danych można przetwarzać np. linia po linii (z użyciem ''fgets()'') oraz: | Z kolei mniej skomplikowane struktury danych można przetwarzać np. linia po linii (z użyciem ''fgets()'') oraz: |
* [[http://www.php.net/manual/pl/function.explode.php|explode]] | * [[https://www.php.net/manual/en/function.explode.php|explode]] |
* [[http://www.php.net/manual/pl/function.implode.php|implode]] | * [[https://www.php.net/manual/en/function.implode.php|implode]] |
| |
| |