![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 26.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Z góry przepraszam jeśli już było, szukałem ale nie znalazłem. Pytanie jest takie: Jest jakiś tam tekst html, w tym tekście html jest np. 10 linków porozrzucanych po całej stronie. Przykładowo: <a class="kasa_powtarzalna" http://www.example1.pl>tytuł strony</a> Cogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum Znaki specjalne <html></html><i>" (*)(@# LKJ LHF(*U)(* ILKFHKLDHFIU H@!)_)#* OIH LCogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum<jakieś adresy>lkjsdl;fkj sdlkfj</php> [0800102102][wielki książe] <a class="kasa_powtarzalna" http://www.example2.pl>tytuł strony2</a> Sumo corgito ego Sumo corgito ego Sumo corgito ego LKJ LHF(*U)(* ILKFHKLDHFIU H@!)_)#* OIH LCogito ergo sum Cogito ergo sum Cogito ergo sum Cogito ergo sum<jakieś adresy>lkjsdl;fkj sdlkfj</php> [090338890][mała książka] Wiem że beznadziejny przykład ale najprościej tak to wytłumaczyć (IMG:style_emoticons/default/smile.gif) Mianowicie - jak widać, powtarza się tylko tekst <a class="klasa_powtarzalna" http:// Później już nic się nie powtarza aż do kolejnego <a class itd. Pomiędzy tymi powtarzalnymi częściami, są różne znaki html(tak jak na przykładzie). Teraz tak - chciałbym móc sobie zapisać(np. w tablicy, BD, obojętne) adres witryny, oraz to co pisze w nawiasach kwadratowych na samym dole w danym przedziale, do powtórzenia kolejnego "<a class=..."(w pierwszym przykładzie "0800102102" i "wielki książe""). Na początku starałem się to zrobić funkcją preg_match_all='/(<a class="klasa_powtarzalna">)+(http:\/\/)+(([a-zA-Z0-9])*\.){2,5}\.?\/?[a-zA-Z0-9]*<\/a>+/si' -> no ale to mi wyświetla tylko adres http. Kombinowałem z pętlami, a później z kolejnym preg_match ale nic z tego Wymyśliłem żeby powycinać kawałki tekstu, czyli np. od <a class="klasa_powtarzalna do <a class="klasa_powtarzalna" (było by tego np. 10 kawałków tekstu) i dopiero te kawałki tekstu poddać "czesaniu" przez preg'a. Prosiłbym o jakieś porady, nakierowanie jak to zrobić, cokolwiek. Czy jest możliwość w ogóle wycinania kawałków tekstu, jeśli jakaś część jest niezmienna i powtarza się np. 10 razy ? Chodzi mi o wycięcie od początku danego kawałka tekstu który się powtórzy, do jego powtórzenia i tak w kółko, aż sobie wszystko podziele na części(zapiszę do tablicy te 10 kawałków tekstu po ileś tam znaków). Pozdrawiam. Darek |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
... a może tak (IMG:style_emoticons/default/snitch.gif) P.S. Założyłem że w : (eh, parser sam przerabia adresy w kodzie >.>") miało być: Ten post edytował melkorm 2.01.2010, 20:50:30 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 26.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Qrcze no dzięki melkorm (IMG:style_emoticons/default/smile.gif)
Właśnie sie dowiedziałem jaki jestem cienki z regularnych (IMG:style_emoticons/default/smile.gif) Co prawda jeszcze nie wiem co do czego ale już szukam po manualu (IMG:style_emoticons/default/smile.gif) Ważne że działa. Dzięki raz jeszcze. Pozdrawiam. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 675 Pomógł: 286 Dołączył: 15.06.2009 Skąd: Wieliczka Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Sam nie jestem zn ich dobry, ale to co napisałem mogę Tobie jeszcze opisać, jeżeli ktoś potrafi napisać lepsze to bardzo proszę bo naprawdę nie wiem czy to w ogóle ma coś wspólnego z wyrażeniami regularnymi .... (IMG:style_emoticons/default/sad.gif)
1. Każdy pattern musi być w // . 2. Nawiasy dają nam to że zostanie to uwzględnione w wynikach. 3. href="(.*)" -> czyli tutaj adres url (IMG:style_emoticons/default/winksmiley.jpg) 4. .*\s.*\s\[([0-9]+)\]\[(.*)\] - (to dla mnie jest brzydkie, ale działa (IMG:style_emoticons/default/tongue.gif) ) .* = cokolwiek i ilekolwiek, \s - łamanie linii i znów cokolwiek i ilekolwiek (jesteśmy w linii z "[090338890][mała książka]") \[ zaznaczenie że to nie część pattern'u tyko zwykły znak. ([0-9]+) (uwzględnienie w wynikach) - znaki od 0-9 w ilości jeden lub więcej. i znów zwykły znak \] po nim \[, znów uwzględnienie wszystkiego co znajdzie się w nawiasach kwadratowych czyli (.*) i zamknięcie nawiasu kwadratowego \]. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 675 Pomógł: 286 Dołączył: 15.06.2009 Skąd: Wieliczka Ostrzeżenie: (0%) ![]() ![]() |
1. Każdy pattern musi być w // . wcale nie (IMG:style_emoticons/default/winksmiley.jpg) // to flagi i można je zmieniać, równie dobrze pattern może być w ## (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 26.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam jeszcze małe pytanko.
Jak to jest z tym " \s " -> bo w kursach pisze, że jest to symbol spacji a nie znak nowej linii(jak w pokazanym tutaj przykładzie) ? Pozdrawiam. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 26.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Dzięki melkorm. Pozwól że jeszcze jedno(osatnie) pytanie (IMG:style_emoticons/default/smile.gif) W jaki sposób wycinać kawałki tekstu: np. od <a class="kasa_powtarzalna" do [mała książka]' Chcę mieć wszystko, co jest zawarte między nimi, ale warunek jest taki że nie wiem ile dokładnie to będzie miało linii(czyli enterów). Nie działa mi z separatorem /si na końcu wyrażenia preg_match, jeśli tam ileś tam \s w linii wyr. regularnego, to działa - tylko że czasami jest to 5 linii tekstu, a czasami np. 10. Pozdrawiam i dzięki raz jeszcze za odpowiedzi. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 26.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
hmm nie do końca o to mi chodziło - chodzi o to żeby wyświetlić WSZYSTKO POMIEDZY ' /< klasa powtarzalna /> ' a '[ cokolwiek w nawiasie ]'Zakładamy, że klasa powtarzalna i nawiasy kwadratowe sie powtarzaja. Z tym że pomiedzy nimi jest raz 5 linijek(enterów) a raz np 10. Mam nadzieje że mnie zrozumiałeś wiem że niejasno tłumacze ale staram sie jak moge (IMG:style_emoticons/default/smile.gif)
Ten post edytował segat 6.01.2010, 17:55:09 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 03:52 |