![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 6 Dołączył: 20.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Próbuję za pomocą wyrażeń regularnych wyciągnąć treść znajdującą się pomiędzy tagami <b></b>, <strong></strong> oraz <i></i>. Moje wyrażenie wygląda tak:
Na stronie wyrzuca mi błąd: Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '[' on line 64 Czy ktoś mógłby mi wyjaśnić gdzie popełniam błąd? Czytam tutorial za tutorialem i nadal nie mogę dojść do ładu :/ Ten post edytował basstone 19.02.2012, 19:08:58 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 189 Pomógł: 60 Dołączył: 5.10.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
http://www.php.net/manual/en/regexp.reference.delimiters.php
W zależności od potrzeb zastanów się czy nie bardziej się tobie opłaca użycie DOMDocument. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 6 Dołączył: 20.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 189 Pomógł: 60 Dołączył: 5.10.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Ten wzorzec zadziała dla wyrażeń które zaczynają się od < później mają przynajmniej 1 literę, a na końcu znak >. Czyli przykładowo:
<cokolwiek> - tak <c> - tak <c dwq> - nie <> - nie cokolwiek> - nie Za wskazanie początku i końca odpowiada odpowiednio ^ i $. Ten post edytował Necsord 19.02.2012, 20:27:31 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 6 Dołączył: 20.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
czyli w teorii powinien wyświetlić mi wszystkie znaki <b> z kodu strony prawda? a nie wyświetla nic mimo, że są :/
Potrzebuję wyciągnąć wszystko spomiędzy tagów <b></b>, <strong></strong>, <i></i> i cokolwiek nie piszę ani razu nie działa, a opieram się na przykładach i instrukcjach z http://pl.wikibooks.org/wiki/PHP/Podstawy_...%84_regularnych Ten post edytował basstone 19.02.2012, 20:32:17 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 189 Pomógł: 60 Dołączył: 5.10.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Twoje wyrażenie regularne jest błędne ponieważ ciąg znaków typu:
costam <b> cos tam</b> nie zaczyna się od < tylko od "costam".
Z uwagą, że to nie złapie zagnieżdżonych. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 6 Dołączył: 20.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
Nie będę zakładał nowego tematu więc dopiszę jeszcze tutaj.
Otóż to, mam taką tablicę i wyrażenie:
Chciałbym aby przez preg_replace zastępowano tylko całe słowa, a nie ich fragmenty. Niestety to wyrażenie nie chce mi zadziałać, a dalej nie mogę dojść do ładu z wyr. regularnymi. Zmienna $czysty cały czas zwraca taki sam tekst jak $in :| |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Zastanów się w jaki sposób przekazujesz tą tablicę. Weź sobie to:
i wyświetl to sobie, a się przekonasz jakie piękne wyrażenie dostajesz i dlaczego nie może zostać dopasowane. Druga sprawa to jest taka że ciężko ci będzie stworzyć wyrażenie które się domyśli że to jest cały wyraz a nie tylko jego część. Raczej będziesz musiał szukać wyrazu który jest poprzedzony spacją i zakończony spacją lub kropką, lub przecinkiem. Czyli przewidywanie pozytywne. Do preg_replace, można przekazać tablicę jako argument, ale nie w taki sposób jak ty to robisz. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.06.2025 - 06:22 |