Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyrażenia regularne - problem z ułożeniem odpowiedniego
Age1869
post 12.07.2011, 00:01:03
Post #1





Grupa: Zarejestrowani
Postów: 118
Pomógł: 6
Dołączył: 25.10.2010
Skąd: Radzyn Podlaski

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


Witam, staram się nauczyć wyrażeń regularnych, które się ciągną za mną już długi długi czas, a które są dość przydatne. W tym celu postanowiłem napisać skrypt, który będzie pobierał artykuł z wikipedii i odpowiednio go formatował:

  1. <?php
  2. /*Powyżej wszystko działa dobrze. Poniżej podane, co i jak ma zostać zastąpione*/
  3. $zastap = Array ( 0 => "#<span.*>#", 1 => "#<div class=.thumbcaption.>^
  4. <div class=.magnify.><a href=.*><img src=.*>.*</div>.*</div>#" );
  5. $czym = Array ( 0 => "<br >", 1 => "<br />" );
  6. $liczba_elementow = count($zastap);
  7. $licz = 0;
  8. while ($licz < $liczba_elementow) {
  9. $f = preg_replace($zastap, $czym, $fragment);
  10. $licz++;
  11. }
  12. $stripped = strip_tags($f, '<b></b><br /><br><i></i>');
  13. echo $stripped;
  14. ?>


numer 0 w tablicy działa dobrze, natomiast numer 1 nie chce ;/ Wyrażenie numer 1 ma zastępować np taki ciąg:
  1. <div class="thumbcaption">
  2. <div class="magnify"><a href="/w/index.php?title=Plik:Jan_Szczepanik_-_one_of_firsts_colour_photo.jpg&amp;filetimestamp=20080404073104" class="internal" title="Powiększ"><img src="http://bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>
  3. Jedna z pierwszych fotografii barwnych wykonana (ok. 1900 roku) metodą opracowaną przez "Polskiego Edisona" <a href="/wiki/Jan_Szczepanik" title="Jan Szczepanik">Jana Szczepanika</a>. Szczepanik opatentował tę metodę w USA i w Wielkiej Brytanii. Na podstawie licencji Szczepanika amerykańska firma <a href="/wiki/Eastman_Kodak" title="Eastman Kodak">Kodak</a> w roku 1928 wprowadziła do sprzedaży film barwny "<a href="/w/index.php?title=Kodachrome&amp;action=edit&amp;redlink=1" class="new" title="Kodachrome (strona nie istnieje)">Kodachrome</a>" a niemiecka firma <a href="/wiki/Agfa-Gevaert" title="Agfa-Gevaert">AGFA</a> po ulepszeniu jego projektu wyprodukowała własne aparaty małoobrazkowe "<a href="/w/index.php?title=Agfacolor&amp;action=edit&amp;redlink=1" class="new" title="Agfacolor (strona nie istnieje)">Agfacolor</a>".</div>


--------------------
Michal Zarobkiewicz Photographic Gallery
Go to the top of the page
+Quote Post
rzymek01
post 12.07.2011, 00:23:56
Post #2





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


kilka wskazówek:
Kod
#<span.*>#

a co się stanie w przypadku:
Kod
$fragment = '<span tak tak>a co teraz <!-- a --> a moze teraz </span><span tak>i</span>';

mianowicie masz dwa spany, a weźmie jako jeden,
pewnie chodzi Ci o taką formułę:
Kod
#<span.*?</span>#


już nie zamęczając w drugim przypadku chodzi pewnie o:
Kod
#<div class=\"thumbcaption\">[[:space:]]*<div class=\"magnify\">.*?</div>.*?</div>#s

ważna jest tutaj flaga s na końcu

aha, no i wywal tę pętlę while, preg_replace przyjmuje także tablice stringów jako argument, zresztą i tak podajesz tablicę, tylko po co dwa razy to wykonywać :/

Ten post edytował rzymek01 12.07.2011, 00:27:40


--------------------
:]
Go to the top of the page
+Quote Post
Age1869
post 12.07.2011, 00:33:40
Post #3





Grupa: Zarejestrowani
Postów: 118
Pomógł: 6
Dołączył: 25.10.2010
Skąd: Radzyn Podlaski

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


Dzięki wielkie, skrypt działa. Teraz zostało mi zastanowić się i wyciągnąć wnioski, ale na to chyba przyjdzie czas rano, bo już trochę zmęczony jestem.


--------------------
Michal Zarobkiewicz Photographic Gallery
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 19:31