Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wyciąć maila z tekstu
Forum PHP.pl > Forum > PHP
BatGraf
Może juz późno, dlatego nie wychodzi mi to, ale te wszystkie substr i inne mieszają mi się już totalnie i padam na kolana z prośbą o pomoc smile.gif

Powiedzcie mi proszę, jak wyciąć adres mail z tekstu?

Mam np tekst:

Lorem Ipsum is simply dummy text of the printing and typesetting pierwsz@mail.pl industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to drugi.glupi@mail.pl make a type

jak wyłuskać różnie wyglądające maile. Niektóre są z dwoma członami połączonymi kropką, niektóre normalnie nazwa@strona.pl

Wyszukuje w kodzie html, więc jedne są "mailto:" inne bez tego

Dzięki z góry wielkie smile.gif
CuteOne
Spamerom mówimy stanowcze NIE... a gotowce znajdziesz na necie (jest ich więcej niż piasku na plaży)
BatGraf
ok, poszukam, ale spamerom i ja mówie nie. nie jest mi potrzebne do zbierania maili ze stron, I nie ściemniam.
To tak jakbym przyszedł do Ciebie, poprosił o radę jaki komputer kupić, e Ty mi na to, że jestem zboczeniec, bo będę oglądał dziecięca pornografię.

Owszem, czasem korzystam z mailingu, ale płacąc freshmailowi i wysyłając do własnej bazy klientów. To, jest mi potrzebne do czegoś zupełnie innego niż spam
Fifi209
Znajdź sobie odpowiednie wyrażenie regularne, które wyszuka maile. ;p
BatGraf
ale to mówisz poważnie czy jaja sobie robisz ze mnie ? smile.gif bo zacząłem szukać smile.gif
thek
Fifi nie żartuje. To wyrażenie regularne z wykorzystaniem preg match all, które zwróci listę wszystkich elementów pasujących do wzorca.
BatGraf
dobra chłopaki, idę edukować smile.gif
A a`propos spamu -
1. też nie cierpię,
2. też jestem przeciw,
3. planuję zakup bazy o odpowiednim targecie, ale - legalnie, z umową
4. pytania dotyczą mojego pomysłu stworzenia narzędzia ułatwiającego życie swoim klientom, obecnym i potencjalnym
5. nienawidzę wychodzić na dupka, który swaniakei wyciąga gotowca - za leniwy jestem, wole się nauczyć niż za dwa miesiące znowu szukać.
6. nie gniewam się za podejrzenie o spamowanie, bo tak można było to odebrać, ale tak faktycznie nie jest.

Dzięki za kierunek, będe drążył resztę z webmade i wujkiem google. teraz z grubsza wiem czego szukać smile.gif
qrooel
BatGraf, nie przejmuj się, tutaj o co byś nie zapytał, to albo nie odrabia się prac domowych, albo jesteś spamerem, hakerem, cudotwórcą itd. (;

Ludzie liczą na pomoc, bardzo często jej nie uzyskują, w zamian dostają docinki.
BatGraf
moje wrażenie co do forum jest takie, że tylko tu piszę, jesli albo czegoś nie znajdę, albo nie wiem jak szukac, bo faktycznie często jest tak, że odpowiedź jest na wierzchu tylko trzeba wiedzieć o co, albo jak zapytać.

Co do odpowiedzi typu spam, czy odrabianie, jestem w stanie zrozumieć z własnego doświadczenia. Wiem, ze ludzie w necie, a faktycznie to swoisty matrix, dzielą sie na kilka grup. Pedofili pomijam biggrin.gif ale co do dwóch o których chcę powiedzieć, to jest grupa - "wymysliłem, napiszę na forum, a ludki mi wkleją gotowca, skopiuję i mam" i grupa "tego nie znam, poszukam wiecej na ten temat (google, fora - czytanie, strony z tutorialami, poradami). łażę po forum, ktoś pyta, wiem, podpowiadam, może komuś się przyda"

Ja mam problemy dwa - nie mam 20 lat, gdzie wszystko włazi do głowy uszami samo i nie znam angielskiego, ale moze nie w tym samym tempaie co sieć, staram się rozwijać smile.gif

Tak, że rozumiem i wpisy typu - spamujesz - bo sam bym tak to odebrał, i "szukaj w goglu" - bo faktycznie można znaleźć prawie wszystko.

Czasem wnerwiają mnie wpisy typu link do strony "google Ci pokaże" smile.gif całe szczęście nie dostałem jeszcze takiej odpowiedzi smile.gif ale widzęc wpisy typu "zadali mi na jutro to, napiszcie mi to tylko szybko" smile.gif Potrafię zrozumieć.
thek
@qrooel: Pomaga się i podpowiada wybitnie często tutaj. Problemem było niedoprecyzowanie autora. Napisał temat tak, że sugerował bota wink.gif A tego typu tematy są ujęte jako niedozwolone. Gdyby napisał: problem jest taki, a taki (tu konkretniej po co chce się to zrobić) i wymaga konieczności znalezienia na stronie adresu, to odebrano by go zupełnie inaczej. A co do odsyłania do wyszukiwarek... Problem nagminnie poruszany a wałkowany po raz tysięczny ktoś po prostu zamknie lub ochrzani autora bo widać wtedy lenistwo autora. Problem mało popularny, ale do znalezienia kończy się zazwyczaj słowami kluczowymi w treści odpowiedzi. Osobie inteligentnej taka podpowiedź w zupełności wystarczy.

Widzę, że BatGraf rozumie to o czym piszę smile.gif Należy do tej kategorii, której słowa kluczowe wystarczają by "złapać byka za rogi" smile.gif
BatGraf
no muszę przyznać, ze tak smile.gif

1. nie piszę boota, ale faktycznie tak wyglądało. Próbuję zrobić coś, co po uploadzie strony człowieczka przefiltruje zawartość (podaje albo cały kod od html do html albo uploaduje plik.html, albo podaje link. w sumie to boot, bo działa podobnie do zbierania maili na stronach, ale nie robi tego, ani pod katem spamowania, ani nie tylko to. Ma zebrać informacje, które podał gość na swojej stronie (mail, tel, gg, skype itp) i ma wstawić na nowszą wersję jego strony.
Piszę celowo troche enigmatycznie, ale zbierać maili po stronach - nawet nie jest mi to potrzebne biggrin.gif Wole nie ryzykować, że z 50 000 maili prawie napewno trafi się ktoś kto się wnerwi i wyśle mnie w wiele różnych miejsc, do których nie chcę trafić.

2. Co do rozwiązania problemu - faktycznie, te dwie rzeczy: wyrażenia regularne i preg_mach mi bardzo dużo powiedziały. W końcu zabrałem sie choćby za wyrażenia regularne, które jakos dotąd omijałem. Nie wychodzi mi to na razie, ale w końcu dotrę do sedna. Nie wiem tylko po jaki diabeł używać preg_mach_all zamiast tylko preg_mach - w czym różnica "globalnie"

3. Nie chcę tu cukrować czy coś, ale z mojego dotychczasowego doświadczenia tylko na tym forum czegokolwiek się dowiedziałem. Inne albo spią, albo przescigają się w efekciarstwie odsyłania do googla. W googlu jest wszystko to fakt, trzeba tylko wiedzieć czasem czego szukać i gdzie. ja nie zawsze to wiem smile.gif
thek
To odpowiem zamiast rozwijać wątki:
ad 2) Preg_match tylko sprawdza czy wzorzec występuje (zwróć uwagę na to co zwraca i parametry), a preg_match_all dodatkowo zwrócić może wszelkie dopasowane do wzorca elementy (też do sprawdzenia w manualu).

ad 3) Forum to wypadkowa wiedzy jego userów i stopnia ich odporności na głupotę piszących tematy wink.gif Proste zależności:
1) Im sensowniej i dokładniej opisanyproblem tym większa szansa na równie dokładną odpowiedź od znającego się na rzeczy usera
2) Im trudniejszy problem tym drastyczniej spada ilość odpowiedzi od początkujących a zwiększa się stosunek tych od faktycznie kumatych
3) Proste problemy, ale dobrze opisane nie zostaną zignorowane, ale odesłane do określonych słów kluczowych, gdyż widać w nich, że autor faktycznie utknął i nie jest leniem, ale sam już próbował (co często widać w temacie)
4) Proste problemy ze skąpymi danymi (lub ich całkowitym brakiem) wskazują lenia smile.gif
5) Każde użycie słów: gotowiec, nie chce mi się, nie umiem, nie mam czasu oraz innych bliskoznacznych zmniejsza szansę na odpowiedź według wzoru:
Kod
SzansaNaUzyskanieOdpowiedzi = 100% * 4 ^ -(liczba trafionych słów)

A więc jedno słowo nie tak i szansa spada do 25%, dwa - 6.25%, trzy - 1.5625%
Dodatkowo szansa na podpadnięcie moderatorom i zamknięcie tematu lub jego usunięcie rośnie w stopniu wykładniczym już bez minusa w potędze tongue.gif
Kod
SzansaNaModerację = 100% * 4 ^ (liczba trafionych słów)
BatGraf
1. dzięki. Teraz faktycznie widać to w manualu. Wcześniej jakos nie mogłem tego połapać smile.gif
2. Zgadzam się z Tobą, głównie przy pkt5. Jak czytam podobne, mam gęsią skórkę, a jak widzę potem, że "jesteście tacy lub inni, bo nie chcecie pomóc" mam ochotę rzucić myszką w autora smile.gif

Nie lubię pisać tematów, nowych czy odświeżać, bo więcej czasu to najczęściej zajmuje, niż samodzielne wyszukanie, ale uczę się sam, przyswajanie wiedzy cos mi cienko czasem wychodzi biggrin.gif i często nie wiem jak zapytać googla.

Co do ogólnego tematu - przebrnąłem już ciut, tylko wyskakuje mi błąd. Jeśli myślisz, że warto podpowiedzieć - będę wdzięczny, jeśli problem jest błahy, powiedz tylko plus minus gdzie byk i czy idę w dobrym kierunku.

  1. $tresc ="gfsdgfdg gfdgfd gfdgfd kok@kko.pl vbfdbfd kok@gygy.pl";
  2. preg_match_all('^([a-z0-9\_-.])@([a-z0-9\_-.])$', $tresc, $tablica);
  3. print_r($tablica);


i wynik:

Cytat
Warning: preg_match_all() [function.preg-match-all]: No ending delimiter '^' found in C:\Program Files\WebServ\httpd-users\bati\Bez nazwy-3.php on line 4


Mam nadzieję, że sam zakwalifikowałem się do dość rozsądnej grupy :]
thek
W wyrażeniu regularnym nie szukaj błędu na razie... Problemem jest fakt, że w funkcjach preg_* konieczne jest jako pierwszy i ostatni znak użycie delimitera, który nie jest częścią samego wyrażenia. Wiele razy ludzie o tym zapominają (w funkcjach ereg_* będących przestarzałymi, on nie występował i dlatego). U Ciebie za delimiter zostało uznane ^ i brak go na końcu wyrażenia, bo znajduje tam $.
Zauważ, że przykłady w manualu posiadają najczęściej preg_match_all( '/tu_wzorzec/', reszta parametrów ); i znak "/" jest takim delimiterem. Oczywiście gdy w wyrażeniu regularnym go używasz to musisz wtedy za delimiter użyć innego znaku. Może on być w sumie dowolny. Ważne by nie "pogryzł się" (czyli nie wystąpił wewnątrz) z wyrażeniem regularnym. Wystarczy że teraz całe wyrażenie ujmiesz w / do formy:
'/^([a-z0-9\_-.])@([a-z0-9\_-.])$/'
a powinno zadziałać.
Swoją drogą zamiast testować tak, możesz sobie zapuścić jakiś soft do sprawdzania wyrażeń. Może ten temat pomoże Ci coś wybrać... http://www.hongkiat.com/blog/regular-expre...ools-resources/
BatGraf
super sprawa z tymi programami. Dzięki. Skorzystałem z wtyczki do FF. Wstawienie/ z obu stron pomogło i generuje, ale ablica jest pusta:

  1. <?php
  2. $tresc ="gfsdgfdg gfdgfd gfdgfd kok@kko.pl mailto:adres@adres.pl vbfdbfd kok@gygy.pl";
  3. preg_match_all("/^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|
    pro|travel)$/"
    , $tresc, $tablica);
  4. print_r($tablica);
  5. ?>


  1. (
  2. [0] => Array
  3. (
  4. )
  5.  
  6. [1] => Array
  7. (
  8. )
  9.  
  10. [2] => Array
  11. (
  12. )
  13.  
  14. [3] => Array
  15. (
  16. )
  17.  
  18. )


Gdzie robię byka?
CuteOne
  1. $pattern="/([\s]*)([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*([ ]+|)@([ ]+|)([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,}))([\s]*)/i";
  2. preg_match_all($pattern, $html_page, $matches);


thek
Nie znajduje bo wyrażenie nie jest teraz prawidłowe... Ja zdaję się na te z helpera Valid Kohany 3.1, bo niestety ale zdarzyło mi się, że filter_var ze sprawdzaniem poprawności mail mnie zawiodło. Jakby co w owym helperze wygląda wyrażenie tak:
  1. $expression = '/^[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d++)?$/iD';
Wygląda strasznie, ale działa i to najważniejsze. Najgorsze, że nie podziała już długo i trzeba je będzie zmieniać, jeśli wejdą w życie zmiany proponowane przez ICANN, a dotyczące domen najwyższego rzędu.Nie wiem czy wiesz, ale będzie za ciężką kasę samemu sobie można domenę najwyższego rzędu u nich stworzyć. Przykład? Adresy typu mail.google, picassa.google itp... zauważ domenę... to już nie 2-3 literówka typu .com czy .pl ale wieloliterowe komercyjne.

Zapomniałbym... Wklej tak jak jest...to /iD na końcu jest prawidłowe gdyż to przełączniki dodatkowe o których możesz poczytać. Wyjaśnię Ci pierwszy... "i" znaczy, że ma nie zwracać uwagi na wielkość liter. Stąd nie ma w regułach A-Za-z i wystarcza samo a-z smile.gif "D" pozostawiam Ci jako zadanie domowe jako lekcję wyrażeń regularnych. Przełączniki te bowiem nieraz są bardzo przydatne i skracają mocno wyrażenia.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.