Strict Standards: Redefining already defined constructor for class wpdb in /blog/wp-includes/wp-db.php on line 49

Deprecated: Assigning the return value of new by reference is deprecated in /blog/wp-includes/cache.php on line 35

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /blog/wp-includes/cache.php on line 400

Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl($output) in /blog/wp-includes/classes.php on line 534

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl($output) in /blog/wp-includes/classes.php on line 534

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el($output) in /blog/wp-includes/classes.php on line 534

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el($output) in /blog/wp-includes/classes.php on line 534

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el($output) in /blog/wp-includes/classes.php on line 553

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl($output) in /blog/wp-includes/classes.php on line 649

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl($output) in /blog/wp-includes/classes.php on line 649

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el($output) in /blog/wp-includes/classes.php on line 649

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el($output) in /blog/wp-includes/classes.php on line 649

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el($output) in /blog/wp-includes/classes.php on line 674

Deprecated: Assigning the return value of new by reference is deprecated in /blog/wp-includes/query.php on line 15

Deprecated: Assigning the return value of new by reference is deprecated in /blog/wp-includes/theme.php on line 505

Strict Standards: Non-static method Advanced_Permalinks::get() should not be called statically in /blog/wp-content/plugins/advanced-permalinks/advanced-permalinks.php on line 825

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method GoogleSitemapGeneratorLoader::Enable() should not be called statically in /blog/wp-includes/plugin.php on line 123

Warning: call_user_func_array() expects parameter 2 to be array, null given in /blog/wp-includes/plugin.php on line 123

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 942
[PHP] Jak pobrać z ciągu znaków tylko wybraną ich część? » egrafik.pl
BAZA WIEDZY
KURSY
Bazy danych w PHP
Kurs AdvancedAJAX
Kurs ASP
Kurs ASP.NET
Kurs C++
Kurs CSS
Kurs HTML
Kurs HTML drugi
Kurs JavaScript
Kurs MySQL
Kurs PHP
Kurs RSS
Kurs XHTML
Obiekty DOM
MANUALE
CSS1 - W3C
DOM - w budowie
PHP 2005
PHP 2006
Wyrażenia regularne
SHOUTBOX
STAT
Online: 21 | UU: 554

Strict Standards: Resource ID#252 used as offset, casting to integer (252) in /forum2/db/mysql4.php on line 223

Strict Standards: Resource ID#252 used as offset, casting to integer (252) in /forum2/db/mysql4.php on line 224
[PHP] Jak pobrać z ciągu znaków tylko wybraną ich część?
15 maj 2007

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Strict Standards: Only variables should be assigned by reference in /blog/wp-includes/post.php on line 114

Deprecated: Function eregi() is deprecated in /blog/wp-content/plugins/tpbc.php on line 96

Wielokrotnie zachodzi potrzeba wydobycia z większego ciągu znaków tylko wybranej części. Takim ciągiem znaków może być np. kod html strony. Załóżmy, że ze strony takiej chcemy pobrać część kodu odpowiedzialną za wyświetlanie zdjęcia. Jak to zrobić? Spróbuję taki hipotetyczny przypadek przedstawić w poniższym przykładzie.

Przykład:

plik.html

Kod: html4strict

<html>
 <head>
 </head>
  <body>
    <p>Jakiś przykładowy tekst.</p>
    <img src="obrazek.jpg" width="100" height="100" alt="obrazek" />
    <p>Jakiś przykładowy tekst2.</p>

  </body>
</html>

plik.php

Kod: php

<?php
  $plik = fopen("plik.html","r");
  $pobrany_plik = fread($plik,500);
  fclose($plik);

 
  preg_match ("/<img(.*?)>/is", $pobrany_plik, $znalezione);
  echo $znalezione[0];
  //wyświetli: <img src="obrazek.jpg" width="100" height="100" alt="obrazek" />
  //czyli na ekranie powinien pojawić się obrazek

  echo $znalezione[1];
  //wyświetli: src="obrazek.jpg" width="100" height="100" alt="obrazek" /
?>

W pierwszej ramce mamy zawartość przykładowego pliku plik.html. Nie jest ona zbyt imponująca, ale ma służyć jako przykład (mogłaby być o wiele większa). Skupmy się jednak na zawartości pliku plik.php z drugiej ramki, tam bowiem odbywa się cała operacja. W pierwszej kolejności do zmiennej $plik przypisywana jest funkcja fopen(), która otwiera plik.html z atrybutem r, czyli tylko do odczytu. Następnie do zmiennej $pobrany_plik poleceniem fread() "ładowana" jest właściwa zawartość całego pliku. Argument 500 w poleceniu fread() określa limit pobranych znaków. Polecenie fclose() zamyka plik.

W dalszej części zastosowana zostaje funkcja preg_match(). Jako argumentów używa wyrażeń regularnych, którymi określić można wzór wg którego wyselekcjonować można z ciągu znaków tylko ich część. Pierwszy argument funkcji preg_match() określa w naszym przykładzie, że interesujący nas ciąg znajdować ma się pomiędzy: <img a znakiem > . Zapis (.*?) określa, że chcemy wyselekcjonować dowolne znaki bez żadnych ograniczeń.

Drugi argument to cały string, z którego ma być dokonywana slekcja, czyli w naszym przypadku kod html z pliku plik.html zapisany w zmiennej $pobrany_plik.

Trzeci argument to zmienna, a raczej tablica, do której zapisywane są wyniki. Dlaczego tablica? Otóż dlatego, że do zmiennej tej zapisywane są wyniki na dwa sposoby. Do tablicy o zerowym indeksie zapisywany jest wynik łącznie z elementami, które podane były jako początek i koniec, natomiast do tablicy z indeksem 1 zapisywany jest wynik bez tych elementów.

Dwa rodzaje wyników wywołane są w przykładzie poleceniem echo $znalezione[0] i echo $znalezione[1].

Funkcją preg_match() przy zastosowaniu odpowiednich wyrażeń regularnych można "wybierać" dowolną treść. Zapraszam do przeczytania kursu o wyrażeniach regularnych.

Autor: Adam Suchowski

WordPress database error: [Incorrect file format 'wp_comments']
SELECT * FROM wp_comments WHERE comment_post_ID = '228' AND comment_approved = '1' ORDER BY comment_date desc

Dodaj komentarz









 
 
| | | |
Copyright © 2006-2013 egrafik.pl | Kontakt | Reklama | Projekty domów
jocker