Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenia regularne - problem z wyciąganiem danych
hote
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.05.2010

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


Mam następujący kod źródłowy html:

  1.  
  2.  
  3.  
  4. <b>Oznaczenie przedsiębiorcy<b>
  5.  
  6.  
  7.  
  8. &nbsp;&nbsp;Firma Kowalski XYZ
  9.  
  10.  
  11. <b>Data rozpoczęcia działalnoci gospodarczej</b>
  12.  
  13.  
  14.  
  15. &nbsp;&nbsp;01.01.2010
  16.  
  17.  
  18. <b>Adres pod którym wykonywana jest działalnoc gospodarcza</b>
  19.  
  20.  
  21.  
  22.  
  23.  
  24. &nbsp;&nbsp;12-345 Miasto (adres siedziby przedsiębiorcy)
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32. &nbsp;&nbsp; 526300
  33. handel okrężny art.spożywczymi i przemysłowymi
  34.  
  35.  
  36. &nbsp;&nbsp; 526520
  37. handel okrężny własnymi wyrobami
  38.  
  39.  
  40.  


chcę wyciągnąć dane za pomocą preg_match_all ale za cholerę nie idzie mi definowanie ciągu

  1. preg_match_all('/&nbsp;&nbsp;(.*?)<b>/', $tekst, $matches);


lipa

Chciałbym aby brało tekst począwszy od ciągu &nbsp;&nbsp i zatrzymywało się gdy znajdzie pustą nową linię.

Kombinowałem z ułatwieniem sobie pracy chcąc usunąć nowe linie:
  1. str_replace('\n','',$ciag);

ale funkcja nie dawała żadnych rezultatów, stąd nie galopowałem z \n to preg_matcha. Tak jakby nowe linie były jakoś inaczej zdefiniowane?
Go to the top of the page
+Quote Post
thomson89
post
Post #2





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


A spróbuj nowe linie zamienić na <br> i wtedy popróbuj. (nl2br)
Go to the top of the page
+Quote Post
Pawel_W
post
Post #3





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


http://php.net/manual/en/reference.pcre.pa...n.modifiers.php
Cytat(s (PCRE_DOTALL))
If this modifier is set, a dot metacharacter in the pattern matches all characters, including newlines. Without it, newlines are excluded. This modifier is equivalent to Perl's /s modifier. A negative class such as [^a] always matches a newline character, independent of the setting of this modifier.

Go to the top of the page
+Quote Post
hote
post
Post #4





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.05.2010

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


Cytat(thomson89 @ 3.08.2010, 01:03:42 ) *
A spróbuj nowe linie zamienić na <br> i wtedy popróbuj. (nl2br)

robiłem tak, wstawiło brki, sam kod źródłowy dalej został z nowymi liniami.
Go to the top of the page
+Quote Post
muk4
post
Post #5





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


nl2br nie zamienia znaków nowego wiersza na tag <br /> tylko dodaje tag przed EOL'em (EOL zostaje).
Spróbuj tego modyfikatora /s
Go to the top of the page
+Quote Post
hote
post
Post #6





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.05.2010

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


/s też nie (IMG:style_emoticons/default/smile.gif)

ale poradziłem sobie (IMG:style_emoticons/default/smile.gif)

ręcznie przekopiowałem z kodu źródłowego ctrl+c to co mnie bolało:
  1. $tekst=str_replace('
  2. ','',$tekst);
  3. $tekst=str_replace(' ','',$tekst);

- a wiec tajemniczą nową linię
- i tajemniczy biały znak niezwykle długi

w pregu walnąłem że ma kończyć jak zauważy 3 nagie spacje:
  1. preg_match_all('/&nbsp;&nbsp;(.*?) /', $tekst, $matches);


i jest urwał (IMG:style_emoticons/default/smile.gif)

Ten post edytował hote 3.08.2010, 01:28:09
Go to the top of the page
+Quote Post
everth
post
Post #7





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Ależ żeś się użerał
  1. $doc = new DOMDocument();
  2. $doc->loadHTML($tekst);
  3.  
  4. echo $doc->documentElement->textContent;
Go to the top of the page
+Quote Post
hote
post
Post #8





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.05.2010

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


hmm (IMG:style_emoticons/default/smile.gif) no cóż, bywa i prościej:D

swoją drogą zamierzam owy skrypt odpalić i pobrać dane z dużej liczby podstron z wykorzystaniem cron jobs zeby serwer to dłużej przetworzył
- chcę funkcję php ze skryptem odpalac co pewien czas i dodawac nastepne rekordy..

1. Czy samo ustawienie limitu czasu wykonywania skryptu wystarczy?
2. A może inny, tak jak powyżej, prosty sposób z php5?
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 Aktualny czas: 4.10.2025 - 13:58