![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 1 Dołączył: 9.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam!!!
Szukałem coś na forum, ale ie znalazłem jednoznaczej podowiedzi. Tak więc krótko. Mam tekst w zmiennej: Teraz chciałbym aby tekst wg liczb, które się powtarzają, podzielić ten tekst i zapisać do tablicy (każdy numer + tekst znajduący się pod nim w osbnym wierszu tabeli). Używam funkcji preg_match_all i wyrażenia regularne, ale nie za bardzo mi wychodzi. Funkcja znakomicie sprawuje się kiedy szukane wyrażenie jest w jednej linii. Wtedy przeszukuje wszystkie linie w poszukiwaniu podane wyrażenia regularnego i zapisuje w tablicy. Kłopot w tym, iż ja chciałbym podzielić tekst z nowymi liniami. Kiedy używam flagi "s" jest to możliwe, ale... źle radzi sobie z przeszukiwaniem i podziałem... Ma ktoś pomysł jak sobie z tym poradzić?? ![]() Potrzebne mi jest to o tyle, że potem w tych tekstach chcę przeszukiwać już konkretne dane, które mogą się powtarzać ale nie muszą... Ten post edytował mxm 11.07.2008, 22:55:01 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 910 Pomógł: 44 Dołączył: 20.02.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 1 Dołączył: 9.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
A jeśli nie mam takiej możliwości, a tekst jest ściągany ze stronki internetowej?
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
zczytuj po linijce i sprawdzaj czy tekst przed pierwszą kropka jest liczbą.
-------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 1 Dołączył: 9.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Tzn. jak czytac i jednocześnie sprawdzać warunek?? Wyjaśnij to precyzyjniej...
Ma ktoś jeszcze jakieś inne pomysły?? Ten post edytował mxm 11.07.2008, 22:17:21 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Najpierw musisz wykryć znaki końca linii bo to nie jest plik tylko 1 zmienna. Za pomocą wspomnianego wczesniej explode podziel tekst. Powinno się udać podzielić ze względu na "\n". (Ale nie jestem pewien. Moze ktoś coś podpowie)
Następnie:
To nie jest moze takie proste ale do zrobienia. Ktoś może wymyśli cos 'kultralniejszego'. To jest wersja bez myslenia bo już późno i mi się kręci w głowie ![]() -------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 1 Dołączył: 9.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie chodzi mi o coś aż tak skomplikowanego.
Dlatego też szukałem rozwiązania za pomocą wyrażeń regularnych... Co takiego można zrobić odczytując np. plik za pomocą file() i tam już tworzona jest tabela z osobnymi wierszami. Możnaby to przeszukiwać ręcznie (tzn każdy wiersz sprawdzać osobno wyrażeniem regularnym), ale to trochę pracochłonne i mało praktyczne. Nie ma prostszego sposobu? Ten post edytował mxm 11.07.2008, 22:49:31 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jest, ale musisz być pewien ze np pusta linia odziela wpisy. Wtedy mozesz okroic moj algorytm do
Ten post edytował Black-Berry 11.07.2008, 23:37:01 -------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 1 Dołączył: 9.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
To nie to o co mi chodziło, ale sposób działa. Poradziłem sobie w ten sposób ze plik zaimportowałem jako file() i potem każdy wiersz tabeli sprawdzałem pod obecność właścnie liczby 101., 102., 103., za pomocą preg_match, bo jak pisałem wcześniej pusta linia nie rozdziela całego tekstu na poszczególne części. Tak jak pisałeś zapisuje poszczególne częsci do bufora i potem łącze linijki tabel w jednolity tekst dla poszczególnych częsci. Jest jednak trochę rozwiązanie na około.
Nie można tego zrealizować jakoś prościej dzielenia tekstu bezpośrednio na całym tekście zawierającym znaki nowej linii? ![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 34 Pomógł: 4 Dołączył: 31.07.2006 Skąd: Oława Ostrzeżenie: (0%) ![]() ![]() |
A próbowałeś funkcji: preg_split() z odpowiednim wyrażeniem regularnym? Tylko problem będzie w tym, że usunie wtedy 101. 102. itp. Ale coś pokombinuj jeszcze, a na pewno się uda :] Powodzenia
Manual: preg_split() Ten post edytował dyniaq 12.07.2008, 09:53:50 -------------------- ~ kim jest Ta, co mi w oczach zasadza takie drzewo? ~
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
nie wiem co to za flaga s ale zakładam że nie będzie przeszkadzać... regularka zadziała pod warunkiem że w tekście po tej liczbie nie będzie innej 3-cyfrowej lub większej liczby |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 1 Dołączył: 9.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
A próbowałeś funkcji: preg_split() z odpowiednim wyrażeniem regularnym? Tylko problem będzie w tym, że usunie wtedy 101. 102. itp. Ale coś pokombinuj jeszcze, a na pewno się uda :] Powodzenia Manual: preg_split() O to chodziło - DZIĘKI. No nawet nie wiedziałem, że ta funkcja może tak wspaniale pracować ![]() ![]() Rzeczywiście funkcja wycina te fragmenty, którymi rodziela tekst, ale akurat w moim przypadku nie były mi te fragmenty potrzebne ![]()
nie wiem co to za flaga s ale zakładam że nie będzie przeszkadzać... regularka zadziała pod warunkiem że w tekście po tej liczbie nie będzie innej 3-cyfrowej lub większej liczby To nie działa. Sam przecież w pierwszym poście to napisałem... Ten post edytował mxm 13.07.2008, 17:56:50 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Twoja regularka się trochę różniła ale rzeczywiście też nie działała, mój błąd
(się poprawię...) można zrobić taką regularkę:
ale to raczej dla sportu niż dla wygody |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 14:22 |