![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 3 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Przedstawię swój problem. Słaby jestem w wyrażeniach regularnych. Mam taki tekst, który jest jedynie cząstka całej treści zmiennej $zawartosc: Kod <span class="postbody"><span style="font-weight: bold">1. Forum</span> <br /> 1.1. Nie spamuj. <br /> 1.2. Nie OFF-TOP’uj. <br /> 1.3. Zakaz pisania nie na temat. <br /> 1.4. Nie nabijaj postów. <br /> 1.4.1. Posty mające poniżej 3 słów, będą uznawane za nabijanie rangi i karane punktami, oraz kasowane. <br /> 1.5. Do założenia nowego tematu, należy wybrać odpowiedni dział. <br /> 1.6. Każdy post powinien być napisany zgodnie z zasadami poprawnej pisowni polskiej, tj. poprawny ortograficznie, gramatycznie i interpunkcyjnie. <br /> 1.7. Zakaz używania wyrazów wulgarnych. <br /> 1.8. Zakaz używania obraźliwych wyrazów, oraz obrażania innych forumowiczów. <br /> 1.9. Zakaz pisania samymi WERSALIKAMI (z włączonym Caps Lockiem). <br /> 1.10. Zakaz pisania w TaKi SpOsÓb. <br /> 1.11. Zabronione jest namawianie do piractwa, czyli podawanie linków do stron warezowych, torrentów i innych tego typu. <br /> 1.12. Zakaz umieszczania nieprzyzwoitych (pornograficznych) lub promujących przemoc treści, lub linków do nich. <br /> 1.13. Każdy Forumowicz, może mieć tylko jedno konto. <br /> 1.14. Kolory <span style="color: darkred">ciemno-czerwony</span>, <span style="color: red">czerwony</span> i <span style="color: blue">niebieski </span>zarezerwowane są dla adminów, natomiast kolor <span style="color: green">zielony </span>dla modów. [Osoby mające inną rangę specjalną piszą takim samym kolorem jak wszyscy zwykli użytkownicy.] <br /> 1.15. W niektórych pod-forach znajdują się osobne regulaminy. <br /> 1.16. Zakaz denerwowania zarządu forum. <br /> 1.17. W podpisie można mieć tylko jeden link. Nie wolno umieszczać w podpisie obrazków większych, niż 300x300 pxl - podpis nie powinien rozciągać forum. <br /> 1.18. Awatar może mieć do 150 pikseli szerokości, wysokość nie większą niż 180 pikseli, a rozmiar nie większy niż 54kB. <br /> 1.19. Przepis o nieaktywnych kontach znajduje się <a href="http://www.forumzwiadowcy.fora.pl/o-forum,69/nieaktywni-uzytkownicy,158.html" target="_blank" class="postlink">tutaj</a>. <br /> 1.20. Zakaz spoilerowania (spiolery należy kolorować na biało i oznaczać <span style="color: orange">pomarańczowym </span>napisem <span style="color: orange">SPOILER</span>) <br /> 1.21 Każdy użytkownik, który nie napisał jeszcze 25 postów może zostać zgłoszony do Zarządu forum jako potencjalny <span style="font-style: italic">troll</span>. Każdy wniosek zostanie rozpatrzony. <br /> <br /> <span style="font-weight: bold">2. C-BOX</span> <br /> 2.1. Zakaz masowego pisania postów w C-Boxach (spamowania). <br /> 2.2. Należy starać się pisać pełne zdania, zaczynać je z dużej litery i kończyć kropką. <br /> 2.3. Zakaz podszywania się pod innych użytkowników w Chat-Boxie. <br /> 2.4. Należy wpisywać identyczną nazwę użytkownika jak ta, jaką ma się na forum. <br /> 2.5. Nie wolno podawać linków do innych forów oraz do stron wymienionych w 1.11. <br /> 2.6. Należy się stosować również do punktów od 1.1 do 1.16 oraz do punktu 1.20. <br /> 2.7 Zakaz reklamowania opowiadań z Celtii. <br /> <br /> <span style="font-weight: bold">3. Moderatorzy</span> <br /> 3.1. Nie zmieniajcie treści postów napisanych przez adminów. <br /> 3.2. Nie kasujcie postów napisanych przez adminów. <br /> 3.3. Nie dawajcie ostrzeżeń bez potrzeby. <br /> 3.4. Osoba mająca choć jedno ostrzeżenie nie może pełnić funkcji moderatora. <br /> <br /> <span style="font-weight: bold">4. Ostrzeżenia: skala.</span> <br /> 4.1. Za złamanie 1.1 – 10 ostrzeżeń. <br /> 4.2. Za złamanie 1.2 – od 5 do 10 ostrzeżeń. <br /> 4.3. Za złamanie 1.3 – od 5 do 10 ostrzeżeń. <br /> 4.4. Za złamanie 1.4 – od 10 do 30 ostrzeżeń. <br /> 4.5. Za złamanie 1.5 – 2 ostrzeżenia. <br /> 4.6. Za złamanie 1.6 – [od 1 do 10 ostrzeżeń. <br /> 4.7. Za złamanie 1.7 – 20 ostrzeżeń. <br /> 4.8. Za złamanie 1.8 – od 10 do 20 ostrzeżeń. <br /> 4.9. Za złamanie 1.9 – 3 ostrzeżenia. <br /> 4.10. Za złamanie 1.10 – 5 ostrzeżeń. <br /> 4.11. Za złamanie 1.11 – od 20 do 30 ostrzeżeń. <br /> 4.12. Za złamanie 1.12 – <span style="font-style: italic">40 ostrzeżeń</span>. <br /> 4.13. Za złamanie 1.13 – 10 ostrzeżeń+ usunięcie drugiego konta. <br /> 4.14. Za złamanie 1.14 – 5 ostrzeżeń. <br /> 4.15. Za złamanie 1.15 – od 3 do 10 ostrzeżeń. <br /> 4.16. Za złamanie 1.16 – 10 ostrzeżeń. <br /> 4.17. Za złamanie 1.17 – 10 ostrzeżeń+ wieczysta blokada podpisu i miesięczna avka. <br /> 4.18. Za złamanie 1.18 – 10 ostrzeżeń+ wieczysta blokada awatara. <br /> 4.19. Za złamanie 1.19 – usunięcie konta. <br /> 4.19.1. Uznanie, że użytkownik jest trollem - usunięcie konta. <br /> 4.20. Za złamanie 2.1 – 10 ostrzeżeń + <span style="font-style: italic">ban z C-boxa</span>. <br /> 4.21. Za złamanie 2.2 – od 1 do 3 ostrzeżeń. <br /> 4.22. Za złamanie 2.3 – od 10 do 20 ostrzeżeń. <br /> 4.23. Za złamanie 2.4 – od 5 do 10 ostrzeżeń. <br /> 4.24. Za złamanie 2.5 – 20 ostrzeżeń. <br /> 4.25. Za złamanie 2.6 – kara przewidziana za złamanie odpowiedniego punktu Regulaminu. <br /> 4.26. Za złamanie 1.20 - od 5 do 10 ostrzeżeń. <br /> 4.27. Za złamanie 2.7 - 10 ostrzeżeń. <br /> 4.27. 40 ostrzeżeń = <span style="font-weight: bold">Ban</span>. <br /> <br /> <span style="font-weight: bold"><span style="text-decoration: underline">Zastrzegamy możliwość zmiany regulaminu.</span></span></span> <span class="gensmall"> I potrzebuję wyciągnąć takie coś. Znaleźć wytropić. Jedyne co z tego się nie zmienia to początek: Kod <span class="postbody"> I koniec: Kod <span class="gensmall"> Pomógłby ktoś z ułożeniem wyrażenia regularnego? Do preg_matcha potrzebny. a próbowałem wszelkich i no wiecie, g z tego wyszło ... |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 3 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
U mnie nie.
Wyświetla całą $zawartosc... A ma tylko to co dałem wyżej... Tzn nic przed początkiem i nic po końcu. Ten post edytował kuba_pilach 7.08.2012, 23:14:51 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 3 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
No niestety to nie to... Wyświetliło zupełnie nie to co miało... A dziwne, bo postbody jest tylko jedno i to co podałem. Więc, to co podałeś, nie jest rozwiązaniem.
Ma ktoś jeszcze jakieś pomysły bądź rozwiązania? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dziwne, bo u mnie działa: http://test.abort.it.pl/regexp.php
Źródło możesz podejrzeć pod http://test.abort.it.pl/regexp.phps (phps!) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 3 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
http://wklej.org/id/806784/
Wprowadź proszę powyższą zawartość do $zawartosc i teraz zobacz, czy ci działa |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
W powyższej zawartości ciąg znaków
Kod <span class="gensmall"> występuje... 7 razy. Więc nic dziwnego, że mój regexp nie zadziałał. Zbyt wiele z dokumentu pasowało (rozpoznawał początek, ale koniec już mu się pomylił!) W takim przypadku regexpa trzeba nieco zmienić, żeby nie był "zachłanny" Odwiedź sobie jeszcze raz adresy podane przeze mnie wyżej. Dla pliku php nie zdziw się, bo wczyta stronę i ją wyświetli, ale po zaznaczeniu całego tekstu w dokumencie zobaczysz wynik jak na dłoni ![]() |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 3 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki!
Ale mam jeszcze jeden problem:
Co robię źle w powyższym? Chodzi mi o to, że teraz się zapętla i cały czas bierze to samo. A chcę, by usuwał i jak może znaleźć inny pasujący do wzoru, to niech znajduje, a jak nie, niech przestaje... EDIT::: Okej, literówka. Zauwazyłem ![]() EDITX2:: A nie... Teraz tylko jedno zostawia... A ma wyświetlać wszystkie spełniające regexpa... Ten post edytował kuba_pilach 8.08.2012, 21:43:41 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
W źródle srony jest JEDNO wystąpienie <span class="postbody">. Regułka jest napisana tak, by dopasować napis od tego miejsca do początku wystapienia najbliższego <span class="gensmall">, i zwraca napis POMIĘDZY tymi tekstami (nie dołączając tych tekstów). Taki napis jest JEDEN, bo jest jeden <span class="postbody">. W związku z tym wynikiem jest ciąg znaków zaczynający się za tagiem <span class="postbody">, i kończący się tuż przed tagiem <span class="gensmall">.
Co do Twojego kodu: w pętli while sprawdzasz CIĄGLE TEN SAM WARUNEK - tam jest zmienna $tresctematu2 (widzisz te "2" na końcu zmiennej?). I ta zmienna wewnątrz while() nie jest modyfikowana, więc co się dziwisz? Wpuściłeś kompa w pętlę nieskończoną, to liczy... i liczy... i liczy... dopóki nie przerwiesz. Ten post edytował abort 8.08.2012, 21:48:18 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 3 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
http://wklej.org/id/806911/
Tu jest inny przypadek. Są dwa postbody. Zmieniłem Kod $tresctematu = str_replace($after,'',$tresctematu); na Kod $tresctematu2 = str_replace($after,'',$tresctematu2); Wyświetla mi tylko jedno spełniające warunek. A ma tyle, ile znajdzie. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Nie trzeba było tak od razu? Tu bardziej przyda się preg_match:
Kod $ilosc = preg_match ('/"postbody">(.*?)<span class="gensmall">/ms', $zawartosc, $wystapienia); w $zawartość podajesz źródło strony, na wyjściu dostajesz uzupełnioną tablicę $wystapienia i ostatni indeks tablicy w zmiennej $ilosc. Po ostatnim przykładzie zmienna $ilosc wyniesie 1, ale trzeba pamiętać, że po preg_match indeks tablicy "leci" od zera. Czyli mamy dwa wystąpienia. Finito. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 3 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki ci ponownie
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 12:51 |