![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 294 Pomógł: 34 Dołączył: 16.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
Chcę przeparsować taki kod:
jak widac, w pierwszym TR sa dwa odnosniki,a w drugim tylko jeden. bez problemu wycinam pozostałe czesci ,tylko nie umiem ustawic tak,aby wykryło czy są dwa linki i jesli tak to ustawic w pętli np BB AA a jesli jeden to samo: YY Da rade cos takiego zrobic ? i druga sprawa, mam tablce z imionami i nazwiskami i chciałbym usunąć z niej imiona. Mozna dodac jakas funkcje w ktorej zapiszemy imiona ktore mają zostac usunięte tak aby zostały same nazwiska? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 38 Pomógł: 9 Dołączył: 16.11.2014 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Średnio rozumiem pytanie, ale postaram się pomóc.
Jeśli chodzi o pierwszą cześć pytania, poczytaj: http://php.net/manual/en/function.empty.php http://php.net/manual/en/function.isset.php Co do imion i nazwisk; http://www.php.pl/Wortal/Artykuly/Pomysly-...mocy-checkdnsrr Poczytaj i zobacz jak wyciągnąć domenę z maila. Pomyśl i wykorzystaj to do oddzielenia imienia i nazwiska ![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Da radę oraz można dodać jakąś funkcję.
Co do pierwszego mozna pokombinowac z tym preg_match_all tak jak w poprzednim wątku, np.: Ale w tym wypadku tracisz ułożenie linków względem siebie (nie wiesz czy AA i BB były obok siebie, czy np. BB stał obok YY). Można to rozwiązać np. jakims bardziej skomplikowanym wzorem, albo najpierw wyciągnięciem komórek tabeli, które zawierają linki, a potem dla każdej takiej komórki wyciągnięcie tekstów linka. Co do drugiego to wiele zależy od budowy tablicy. Gdy jest ona prosta, każdy element to albo imię albo nazwisko to wystarczy zwykłe array_diff z tablicą z imionami. Gdy elementy tablicy to "imię nazwisko", to wówczas pętla przez każdy element tablicy i podmiana imion na puste ciągi oraz trim dla wyniku, by usunąć zbędne białe znaki. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 294 Pomógł: 34 Dołączył: 16.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
Nie znam niestety tak dobrze się na tablicach i tym wycinaniu, mógłbyś pokazać jak to ma wyglądać?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Wklej kawałek tablicy z tymi imionami i nazwiskami, by wiedzieć od czego zacząć.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 294 Pomógł: 34 Dołączył: 16.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Wyczyść dokładnie tak jak pisałem
![]()
Edycja: jeśli jesteś pewien, że w tablicy zawsze znajduje się na przodzie imię, to nawet nie musisz tworzyć dodatkowej tablicy z imionami, a wystarczy wyciąć z $wyczysc w pętli tylko to co znajduje się po spacji, albo explode po spacji i array_pop, gdy może być wiecej imion, itp. kombinacje. Ten post edytował kreatiff 13.05.2015, 17:36:08 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 294 Pomógł: 34 Dołączył: 16.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
musiałem lekko podmienic bo ja je wyciagam z pewnej strony,kod:
i wyswietla NULL. Co tutaj zle zrobiłem ? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Strzelam, bo nie znam wygląda zmiennej $getinfo. Jak już przypisujesz jej podtablicę do zmiennej $a, to w foreach nie używasz już odwołania do poddablicy ($a[0]), tylko po prostu $a.
Albo bez tworzenia dodatkowej zmiennej $a, po prostu robisz foreach dla $getinfo[2]. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 294 Pomógł: 34 Dołączył: 16.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
Zadziałało jestes WIELKI
![]() ![]() a dałbyś radę mi jeszcze pomóc z tym :
jak widac, w pierwszym TR sa dwa odnosniki,a w drugim tylko jeden. bez problemu wycinam pozostałe czesci ,tylko nie umiem ustawic tak,aby wykryło czy są dwa linki i jesli tak to ustawic w pętli np BB AA a jesli jeden to samo: YY [/php] też nie mam pojęcia jak wyciągnąc dane z każdego TR edit zle napisałem nie mam pojęcia jak oczytać czy są w TR dwa odnośniki czy jeden Ten post edytował Star 13.05.2015, 17:50:30 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Np. tym wyłapiesz wszystkie komórki, które mają linki:
Następnie dla każdego wyniku łapania $w[1] możesz wyciągać treść linka taką samą regułą jak w poście 3, albo np. korzystając z funkcji strip_tags. Jeszcze jedna ważna uwaga. HTML nie jest językiem regularnym, dlatego trzeba uważać stosując do jego parsowania wyrażenia regularne, bo można się wpędzić w maliny. Zobrazować to co właśnie napisałem można na przykładzie kodu, który wkleiłeś w ostatnim poście. Zauważ, że w linii 10 brakuje domknięcia tagu komórki. Każda przeglądarka sobie w tym poradzi i skoryguje błąd. Wyrażenie regularne oparte na wzorze, gdzie ten tag jest zamknięty już tej konkretnej komórki nie wyłapie bazując na wzorze, który zapisałem. Ten post edytował kreatiff 13.05.2015, 18:13:44 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 294 Pomógł: 34 Dołączył: 16.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
Wrzuciłem
i pokazało pustą tablicę Array ( [0] => Array ( ) ) W źródle strony która parsuje jest wiele TR,tak jak tu podałem
tutaj dałem dwa ,ale moze byc i 200, ja chcę zapisać do bazy każda wartość tej klasy z każdego TR osobno gdy użyłem to niby wyszukało,ale problem się zrobił taki,że gdy wyswietliłem wszystko razem,tzn wartość z pierwszego odnosnika i z drugiego obok siebie to zlały mi się jesli w którymś TR tego drugiego odnośnika nie było i w efekcie przy nazwie pierwszego odnosnika była zła nazwa drugiego. Mam nadzieję ,że z tym tez cos wymyślisz, bo mnie nic do głowy nie przychodzi ![]() Ten post edytował Star 13.05.2015, 18:26:10 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Działa, ale sprawa jest śliska:
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 150 Pomógł: 31 Dołączył: 10.01.2007 Skąd: Bydgoszcz/Inowrocław Ostrzeżenie: (0%) ![]() ![]() |
Może coś podobnego? Nie testowałem, więc może być babol
![]()
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 294 Pomógł: 34 Dołączył: 16.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
wrzucając kod od Ciebie Kreatiff mam cos takiego:
array(0) { } a od Salfunglandyare jest samo Array ( ) w kodzie pierwszym kodzie nie ma nic o TR a to własnie wazne aby wyciągnąć dane spod niego, bo gdy wrzucam samo TD to jesli nie ma drugiego odnosnika to pierwszemu dopisuje wartość nastepnego drugiego i to jest całym problemem |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Trudno powiedzieć co nie pasuje. Mój kod podstawiajac mu pod $a dokłądnie to co w pierwszym pościa zwraca mi taką tablicę:
Czyli dokładnie tak jak zrozumiałem chcesz by zwracał. Więc możliwe, że zachodzą jakieś nieregularności w całym kodzie do sparsowania. To jest właśnie ta "śliskość" regexów parsujących html. Nie bardzo wiem jak dalej próbować idąc tą drogą. Możesz też podejść całkiem inaczej. Rozbić całe źródło za pomocą explode po np. tagu otwierającym rząd tabeli <tr> i z kolejnych elementów tablicy powstałej po takim rozbiciu wyciągać treść linków, jeśli te istnieją. Tym sposobem każdy element tablicy będzie miał tylko te linki, które znajdują się w danym rzędzie tabeli i można będzie je łątwo skleić w jedną całość. |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 150 Pomógł: 31 Dołączył: 10.01.2007 Skąd: Bydgoszcz/Inowrocław Ostrzeżenie: (0%) ![]() ![]() |
Przetestowałem, mój działa, gdzie: $get - tu znajduje się html, domena to http://jakislink.pl
cały kod z testowania:
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 294 Pomógł: 34 Dołączył: 16.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
Kreatiff, gdy dałemm tak kod :
to mi sie cała strona załadowała,łacznie z tym co jest poza tr czyli <html> itp Salfunglandyare ,własnie o to prawie chodzi tylko w jednej linii maja byc nazwy odnosników ,a w petli od Ciebie są nazwy i to co jest poza linkiem czyli z takiego kodu
ma wyjść BB AA a z takiego
ma wyjsc tylko YY da rade jakos to naprawic ? Ten post edytował Star 13.05.2015, 20:07:34 |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 150 Pomógł: 31 Dołączył: 10.01.2007 Skąd: Bydgoszcz/Inowrocław Ostrzeżenie: (0%) ![]() ![]() |
później:
Ten post edytował salfunglandyare 13.05.2015, 20:27:50 |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 294 Pomógł: 34 Dołączył: 16.02.2015 Ostrzeżenie: (0%) ![]() ![]() |
Własnie o to chodzi ,tylko gdy podmieniam ta $get na zrodlo strony ktore trzeba przeparsowac to dalej wyskakuje tylko Array ( ) i nic poza tym
![]() Ten post edytował Star 13.05.2015, 20:42:52 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 06:27 |