Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]"Wycinanie" fragmentu tekstu
benzulli
post 26.04.2014, 21:25:13
Post #1





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 3.07.2013

Ostrzeżenie: (0%)
-----


Witam

Szukam funkcji, podobnej do substr.

Pobieram za pomocą cURLa z pewnej strony dane. Za każdym razem jak bym chciał je pobrać, te dane się zmieniają w zależności jakiego użytkownika wybiorę. Chciałbym "wyciąć" tylko pole z pewnymi informacjami, czyli np. sam adres e-mail, gdzie wyżej znajdują się różnej długości imię i nazwisko czy miejscowość. Jak to zrobić?
Go to the top of the page
+Quote Post
Turson
post 26.04.2014, 21:31:04
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


  1. $tekst = preg_replace('/^[a-zA-Z0-9\.\-_]+\@[a-zA-Z0-9\.\-_]+\.[a-z]{2,4}$/D', '', $tekst);
Go to the top of the page
+Quote Post
benzulli
post 26.04.2014, 22:32:39
Post #3





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 3.07.2013

Ostrzeżenie: (0%)
-----


Dzięki Szefie zakochany.gif

Dopiero teraz sprawdziłem, chodziło mi o zostawienie tego maila, a wyrzucenie reszty tekstu. Czyli na przykład mam:

Kod
Imię: Jan Kowalski
Miejscowość: Warszawa
Adres: ul. Piąta 5/6
E-mail: janek@kowalski.pl
Telefon: 123 456 789


Chcę teraz "pobrać" linijkę
Kod
E-mail: janek@kowalski.pl
Go to the top of the page
+Quote Post
Turson
post 26.04.2014, 22:35:34
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


  1. preg_match('/[a-zA-Z0-9\.\-_]+\@[a-zA-Z0-9\.\-_]+\.[a-z]{2,4}/D', $tekst, $email);
  2. var_dump($email);


Ten post edytował Turson 26.04.2014, 23:06:51
Go to the top of the page
+Quote Post
benzulli
post 26.04.2014, 23:05:14
Post #5





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 3.07.2013

Ostrzeżenie: (0%)
-----


$blabla = preg_match(''/^[a-zA-Z0-9\.\-_]+\@[a-zA-Z0-9\.\-_]+\.[a-z]{2,4}$/D', 'blablabla#$@#$danen111@interia.pl gydrtgdg');
echo $blabla;

Wynik mi wyszedł "0" (to sięna stronie pokaząło).

Ten post edytował benzulli 26.04.2014, 23:06:43
Go to the top of the page
+Quote Post
Turson
post 26.04.2014, 23:07:14
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Właśnie zrobiłem edycję.
Go to the top of the page
+Quote Post
benzulli
post 26.04.2014, 23:11:13
Post #7





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 3.07.2013

Ostrzeżenie: (0%)
-----


array(1) { [0]=> string(27) "janekkowalski@interia.pl" }

Czy da się ominąć to i zostawić sam email, czy muszę użyć jeszcze raz preg_replace?
Go to the top of the page
+Quote Post
Turson
post 26.04.2014, 23:13:54
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


To jest tablica...
  1. echo $email[0];
Go to the top of the page
+Quote Post
benzulli
post 26.04.2014, 23:23:17
Post #9





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 3.07.2013

Ostrzeżenie: (0%)
-----


Hah, dzięki.
Go to the top of the page
+Quote Post
emillo91
post 27.04.2014, 09:16:05
Post #10





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 29.03.2012

Ostrzeżenie: (0%)
-----


Ja kiedyś interesowałem się przeszukiwaniem tekstu w pliku i wyświetleniem szukanego pliku i wpadłem na funkcję strpos() i aby wyświetlić wyszukiwany fragment danych zrobiłem coś takiego:
  1. $szukaj = 'g20-wykonawca-hit color2 f3 fontface left';
  2. $ile = count($file);
  3. for($i = 0; $i <= $ile; $i++)
  4. {
  5. if(strpos($file[$i-1], $szukaj) != false){
  6. $linia = ($i+1);
  7. $linia2 = ($linia+13);
  8. $oczysc = trim($file[$linia]);
  9. }

Skrypt ma za zadanie znaleźć wyszukiwany fragment poprzez sprawdzenie warunku: jeżeli znajdziesz fragment to wyświetl go w petli tyle razy ile trzeba. Funkcja trim oczyszcza skrypt z niepotrzebnych spacji.
Jakby co to tutaj masz cały skrypt który wyświetla i linkuje tytuły piosenek ze strony na podstawie wyszukiwanego fragmentu tekstu:
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  4. <style>
  5. body{
  6. text-align:left;
  7. }
  8. a{
  9. text-decoration:none;
  10. }
  11. .ico-hear{
  12. background:url('http://zagram.org/kropkaBlue1.gif');
  13. }
  14. </style>
  15.  
  16. <title>esss</title>
  17.  
  18. </head>
  19.  
  20. <body>
  21. <?php
  22. $homepage = file_get_contents('http://www.eska.pl/goraca20');
  23. $homepage = file_put_contents('lista.txt', $homepage);
  24.  
  25. $file = file('lista.txt');
  26. $plik = fread(fopen("lista.txt", "r"), filesize("lista.txt"));
  27. $szukaj = 'g20-wykonawca-hit color2 f3 fontface left';
  28. $ile = count($file);
  29. for($i = 0; $i <= $ile; $i++)
  30. {
  31. if(strpos($file[$i-1], $szukaj) != false){
  32. $linia = ($i+1); // przeskocz o jeden wiersz w dół
  33. $linia2 = ($linia+13); // przeskocz o trzynaście wierszy w dół
  34. $oczysc = trim($file[$linia]);
  35. $wstaw = str_replace(array(' ', '&amp;'), array('+', '%26'), $oczysc); //wyświetl oczyszczony tytuł i wstaw znak + zamiast spacji
  36. echo '<a href="http://ulub.pl/szukaj.html?q='.$wstaw.'" >'.$oczysc.'</a> '.$file[$linia2].'<br>'; // linkuj tytuł
  37. }
  38. }
  39. ?>
  40. </body>
  41. </html>


Demo : Link

Ten post edytował emillo91 27.04.2014, 09:17:53
Go to the top of the page
+Quote Post
Turson
post 27.04.2014, 11:00:32
Post #11





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


emillo91, ale jak strpos znajdzie adres e-mail jeżeli nie wiemy jaki on jest? Dlatego właśnie wyrażenie regularne
Go to the top of the page
+Quote Post
emillo91
post 28.04.2014, 09:14:12
Post #12





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 29.03.2012

Ostrzeżenie: (0%)
-----


Ale adres email musi być oznaczony jakimś divem który można przecież pobrać . To nic innego jak przeszukiwanie źródła strony i wyświetlenie wszystkiego co znajduje się w divie o klasie np email bo email na stronie musi być jakoś wypozycjonowany.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 06:54