![]() |
![]() ![]() |
![]() |
-richard_rahl- |
![]() ![]()
Post
#1
|
Goście ![]() |
Witajcie! Uczę się dopiero wyrazen regularnych i ogolnie php, calej reszty. Jedna rzecz mi spedza sen z powiek.. Chce pobrac dane z tabelki na zewnetrznej stronie internetowej, a nastepnie zapisac do bazy danych, niestety nie wychodzi. Zalezy mi jedynie na skrocie nazwy indeksu i jego cenie na gieldzie. Pokazuje blad:
Warning: preg_match() [function.preg-match]: Unknown modifier 'a' in /home/amplaman/public_html/PHPPage4.php on line 1162 Podaje kod:
Dzieki z gory za pomoc! : ) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
W skrócie i uproszczeniu: preg_match szuka ciągu znaków otoczonego z lewej strony przez '/ - a z prawej strony przez /'.
Oznacza to, że: 1. Do funkcji przekazujesz ciąg znaków otoczony w '' 2. preg_match (zresztą, wszystkie preg_*) bada pierwszy znak jako "delimiter wyrażenia regularnego". A Ty w środku tego wyrażenia dajesz mnóstwo zamykających tagów HTML, które zawierają "/" - preg_match uznaje to za koniec wyrażenia, i wszystko co następne uznaje za "modifier". Tu konkretnie bruździ linia kodu nr 7, i tag "</a>", o czym php nie omieszkało poinformować jakże czytelnym komunikatem. Rozwiązania są dwa: 1. wyescape'ować wszystkie "/" na "\/" - co zapewni to co chcesz 2. użyć zamiast '/wyrażenie regularne/' czegoś innego, np '@wyrażenie regularne@' - krótko pisząc, delimiterem dla całego wyrażenia regularnego ustaw sobie inny znak niż "/". Może to być dowolny znak z wyjątkiem: backslasha (\), whitespace, litery lub cyfry. Najczęściej spotkałem się z '+', "@" i "~". Choć "+" akurat nie jest najszczęśliwszy - bo dość często występuje w samych wyrażeniach regularnych. Oczywiście, jeśli jako delimiter dasz "@", to przy dopasowywaniu np. adresu mailowego musisz w patternie dla preg_* wpisywać "\@", np: '@user\@host'. Dlatego najlepiej wybrać coś, co relatywnie rzadko występuje w badanych ciągach - poczytaj http://pl2.php.net/manual/en/regexp.reference.delimiters.php Który sposób będzie dla Ciebie lepszy? Popróbuj. Ten post edytował abort 10.11.2011, 08:26:17 |
|
|
-richard_rahl- |
![]()
Post
#3
|
Goście ![]() |
Witam! Dziękuję za pomoc, teraz wszystko gra, użyłem "#". Teraz nieco inny problem pozostaje - nie wyskakuje już żaden błąd, ale dane nie zapisują się w bazie danych. Co może być zrypane?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 486 Pomógł: 101 Dołączył: 27.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
-richard_rahl- |
![]()
Post
#5
|
Goście ![]() |
Poprawiłem apostrof i dodałem die, ale baza danych nadal pusta ; o
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 04:15 |