Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]preg_match białe znaki
knypraca
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 9.11.2014

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


Witam!
Zaciągam pytania z systemu i natknąłem się na problem.
  1. preg_match('|<tr>
  2. <td style="text-align:left;"><p><input name="formqst" value="true" type="radio"/> c) Odpowiedz</p></td>
  3. </tr>
  4.  
  5. <tr>
  6. <td style="text-align:left;"><p><input name="formqst" value="false" type="radio"/> d) Odpowiedz
  7. </p></td>
  8. </tr>|Ui',$info,$mysl);

Wiem, białe znaki usuwam w sposób \s+. Natomiast jak mogę zautomatyzować wstawianie tego znaku.
Problem tkwi w powyższym kodzie - raz znaczniki
  1. </p></td>
są w jednej linii z odpowiedzią, a raz w następnej. I psuje mi to cały skrypt...
Da radę jakoś nakazać preg_matchowi wykrywać samemu nową linię?
Proszę o pomoc.
Go to the top of the page
+Quote Post
itype88
post
Post #2





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.05.2016

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


http://php.net/manual/en/reference.pcre.pa...n.modifiers.php
modyfikator m? strzelam :E
Go to the top of the page
+Quote Post
knypraca
post
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 9.11.2014

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


  1. $info = file_get_contents("$firsturl");
  2. preg_match('|<form method="post" action="(.*)" onsubmit="(.*)">\s+<table style="width: 940px;">\s+<tr><td style="vertical-align:top;text-align:left;font-weight:bold;">\s+<p>(.*)</p></td></tr>\s+<tr><td style="vertical-align:top;text-align:left;font-weight:bold;"><p><span style="(.*)">(.*)</span>(.*)</td></tr>\s+<tr>\s+<td style="text-align:left;"><p><input name="formqst" value="(.*);(.*);(.*)" type="radio"/>(.*)</p></td> \s+</tr>\s+<tr>\s+<td style="text-align:left;"><p><input name="formqst" value="(.*);(.*);(.*)" type="radio"/>(.*)</p></td> \s+</tr>\s+<tr>\s+<td style="text-align:left;"><p><input name="formqst" value="(.*);(.*);(.*)" type="radio"/>(.*)</p></td> \s+</tr>\s+<tr>\s+<td style="text-align:left;"><p><input name="formqst" value="(.*);(.*);(.*)" type="radio"/>(.*)</p></td> \s+</tr>|Ui',$info,$mysl);

Mam coś takiego. Jak powstawiać ^ or $ ? GDzie i jak to dokadniej ma wyglądać? Można prosić o przykład?
Tak to ma wyglądać?
  1. ^<input name="formqst" value="(.*);(.*);(.*)" type="radio"/>(.*)</p></td>$ czy może
  2. <input name="formqst" value="(.*);(.*);(.*)" type="radio"/>(.*)^</p></td>$
  3.  
Go to the top of the page
+Quote Post
Arcioch
post
Post #4





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

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


Pokaż dokładnie co chcesz wyciągnąć z jakiego kawałka strony (IMG:style_emoticons/default/smile.gif)
Wyrażenia regularne do html to nie zbyt dobry pomysł.
Nie lepiej użyć dom parsera i bez trudu wyciągnąć co potrzebujesz (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
knypraca
post
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 9.11.2014

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


Potrzeba mi wyciągnąć wszystko co jest zaznaczone powyżej jako (.*)
Dokładniej pytanie, 4 odpowiedzi => plus zaznaczenie, która dokładnie jest poprawna (w źródle true false) i zapis do bazy.
Dodatkowo mam to zrobione w pętli - 100 pytań więc z form action wyciągam link do kolejnego pliku.
Działa to ogólnie ładnie do max 30-40 pytań - potem zacznają się jakieś obrazki albo tak jak pisałem <td> nie jest na końcu odpowiedzi tylko w innej linijce.
I skrypt zostaje przerwany bo preg match nie wyciąga mi linku do kolejnego pytania. :/
Go to the top of the page
+Quote Post
Arcioch
post
Post #6





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

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


Jak możesz to podaj adres strony, z której chcesz to wyciągnąć albo html to podepnę dom parsera i zobaczymy jak to wyjdzie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
LowiczakPL
post
Post #7





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


to jest Twoje zapytanie regex

#value="(.*)" |\/>(.*)<\/p#
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: 23.08.2025 - 05:17