![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 20 Dołączył: 13.05.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Chciałem prosić o pomoc przy napisaniu wyrażenia regularnego które wyłuskało by wszystkie input-y ze stringu. Napisałem coś takiego:
Niestety działa to tylko gdy mam bardzo prosty przykład np.
-------------------- Kurs Video PHP i MySQL, porady-it.pl - gotowe rozwiązania dla webmasterów
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 20.08.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Cytat Niestety działa to tylko gdy mam bardzo prosty przykład np. <?php $result = '<input type="text" name="www">'; ?> Co masz na myśli pisząc bardzo prosty przykład? Jakie 'inputy' byś chciał przetwarzać? Może to pomoże ![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 20 Dołączył: 13.05.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Poniżej fragment kodu z którego chciałbym wyłuskać listę input-ów:
Kod <form action="xxx" method="post" id="f1" autocomplete="OFF" onSubmit="return checkForm(f1)">
<input name="typ" type="hidden" value="10006"> <input name="inumer" type="hidden" value="1219263295638"> <input type="hidden" name="lang" value="pl"> <input type="hidden" name="loginOrigin" value="0"> <div class="left_margin"> <b>NIK:</b> <input type="text" name="id" size="13" maxlength="12" class="content_center_input"> <script language="JavaScript" type="text/javascript"> document.forms["f1"].elements["id"].focus(); </script> <table cellpadding="0" cellspacing="0" class="left_margin" style="font-family: Verdana; font-weight: bold; font-size: 11px; color:#FFFFFF"> <tr><td colspan="2"></td></tr> </table> <div style="text-align: right; padding: 0 155px 0 0;"><input type="image" id="okBtn" src="/gif/shared/login/zaloguj_pl.gif" name="okButton" ></div> <table> <tr> <td> <div style="padding: 0 0 0 5px;"><a href="javascript:void(0);" title=""><img src="/gif/shared/login/flag_en.gif" alt="" onclick="document.forms['f1'].elements['typ'].value=13;document.forms['f1'].elements['lang'].value='en';document.forms['f1'].submit();"></a></div> </td> <td width="100%"> <div style="padding: 0 5 0 0px; text-align: right; font-family: Verdana; font-size: 11px; font-weight: bold;"><a href="http://dlaciebie.bzwbk.pl/12481" target="_blank">Zobacz DEMO</a></div> </td> </tr> </table> </form> -------------------- Kurs Video PHP i MySQL, porady-it.pl - gotowe rozwiązania dla webmasterów
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował pyro 20.08.2008, 21:28:04 -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 20 Dołączył: 13.05.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Rzeczywiście daje oczekiwane efekty
![]() ![]()
-------------------- Kurs Video PHP i MySQL, porady-it.pl - gotowe rozwiązania dla webmasterów
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
sie zajmij tym sam
![]() -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Jeśli name będzie zawsze przed value to
-------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
bim2 twoj regex jest bledny
-------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Dużo mi to nie mówi. Wyskakuje jakiś błąd w regexie, czy nic nie znajduje, a może znajduje tylko część?
-------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
nic z tych rzeczy, poprostu widać, że jest błędny
![]() 1. nie dałeś jeszcze pod uwagę type="" 2. w niektorych miejscach blednie .*? -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 508 Pomógł: 75 Dołączył: 2.11.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Moje rozwiązanie jest chyba dość cienkie wydajnościowo, ale to jedyne co mi przychodzi do głowy:
Po wykonaniu tego będziesz miał podobną tablicę $inputs jak wyżej napisałeś. Pisane z palca, aczkolwiek powinno działać. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Ehh, wydajniej:
-------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 508 Pomógł: 75 Dołączył: 2.11.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Ehh, wydajniej:
Wcale nie. Błąd za błędem. W moim kodzie akurat najwięcej wydajności traci się poprzez wielokrotne użycie preg_match_all. W Twoim wypadku tych wywołań jest tyle samo. Pętla foreach() była zawsze mniej wydajna od innych pętli - for() i while(). print_r($atrybuty); na końcu wyświetli tylko atrybuty z ostatniego inputa, a chyba chodzi o to, aby były wszystkie... To na pewno nie jest poprawnie. Tak samo Twój kod nie potrafi odczytać po kolei atrybutów, bo usunąłeś ważną część kodu - bez sensu. |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
po co wy cuda niewidy robicie, przecież to wszystko można w jednym regexie załatwic...
-------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 508 Pomógł: 75 Dołączył: 2.11.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
a żeby ci kochanieńki łyso było.
moglem gdzies zrobic blad, bo troszke dlugi regex, ale mniej wiecej powinien wygladac tka jak pokazalem. Powinien wychwytywac rozne inputy typu: <iNpUt type="text" name="bla" value="bla" /> <input value="cos" name="a" type="button"> itd, itp. -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 508 Pomógł: 75 Dołączył: 2.11.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
... A co jeżeli dojdą inne argumenty? Będziesz wszystkie po kolei dopisywał? Dla mnie rozwiązania łopatologiczne to żadne rozwiązania. Ale kto jak woli. Jeżeli Ci takie coś odpowiada, to się nie rzucam...
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
a co za problem dorzucić inne argumenty?
-------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 508 Pomógł: 75 Dołączył: 2.11.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
a co za problem dorzucić inne argumenty? Właśnie chodzi o to, żeby kod działał ze wszystkimi argumentami i nie trzeba było ich dodawać. Takich rozwiązań prawie wcale nie stosuję. Wolałbym zrobić pełną automatykę. Jednak pisałem - kto jak woli. Nie kontynuujmy tego, bo wiadomo - Ty będziesz pisał, że masz rację i ja tak samo. Autor tematu sam sobie wybierze rozwiązanie. |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
franki01 twój kod najwięcej traci na wydajności kiedy w pętli for czytasz ciągle od nowa wielkość tablicy funkcją count. Jak już jesteśmy przy twoim kodzie to najwydajniej (jak mówisz że for jest wydajniejsze) będzie dać $c = count($tablica);
for($i=0;$i<$c;$i++) { } -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 19:54 |