Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]problem z file_get_contents i preg_match
Mikos
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 22.06.2008

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


Witam,
piszę skrypt, który z urli dodawanych w formularzu wyciąga email i dodaje go do bazy. Mam dwa problemy:
1. Przy dodawaniu więcej niż jednego urla pojawiają się problemy - skrypt dodaje email tylko z ostatniego urla.
2. W jaki sposób mam dodać zmienną email do bazy? Dodając tak jak teraz mam w tabeli "Array", dodając jako $email[0] lub $email[1] mam puste pole. Udało mi się ominąć ten problem dodając dane ze zmiennej $email foreachem, ale będę wdzięczny za podunięcie wygodniejszego rozwiązania.

Dzięki


  1. $linki = explode("\n", $_POST['linki']);
  2.  
  3. $db = new mysqli('localhost', 'root', 'root', 'linki');
  4.  
  5. if (mysqli_connect_errno()) {
  6. echo 'Błąd: ';
  7. }
  8.  
  9.  
  10. foreach ( $linki as $link) {
  11.  
  12. $przetwarzany_url = file_get_contents($link);
  13.  
  14. preg_match( "/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $przetwarzany_url, $email);//email
  15.  
  16.  
  17. $zapytanie = "INSERT INTO urle set adres = '$email' "; //to zapytanie nie dodaje emaila do bazy!
  18.  
  19. $wynik = $db->query($zapytanie);
  20. }


Ten post edytował Mikos 19.10.2011, 12:14:50
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




var_dump($email);
a dowiesz się czemu masz array lub czemu masz nic.
Go to the top of the page
+Quote Post
Mikos
post
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 22.06.2008

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


Wyrzuciło mi:

{ [0]=> string(20) "xxx@xxx.xxx" }

Masz może jakiś pomysł na tego foreacha, który dodaje tylko dane z ostatniego urla?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to teraz zrób
print_r($linki);
(IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
dwwa
post
Post #5





Grupa: Zarejestrowani
Postów: 47
Pomógł: 1
Dołączył: 14.09.2011

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


implode jak dobrze pamiętam
Go to the top of the page
+Quote Post
Mikos
post
Post #6





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 22.06.2008

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


hehe,
print_r wyświetla wszystkie urle wprowadzone do formularza. Wygląda to tak:
http://pierwszyurl.com array(0) { } http://drugiurl.com array(1) { [0]=> string(17) "xxx@xxx.xxx" }

Wygląda na to jakby problem był z file_get_contents.

--------------------------------------------------------------------------------



powyższy post to był print_r($link)-umieszczony w foreachu.

Jeśli chodzi o print_r($linki);
Array ( [0] => http://www.pierwszyurl.com [1] => http://www.drugiurl.com )


--------------------------------------------------------------------------------

Udało mi się częściowo rozwiązać problem, tzn dodawanie maila. Niestety, skrypt nadal przetwarza tylko ostatni url.

  1. $linki = explode("\n", $_POST['linki']);
  2. print_r($linki);
  3.  
  4. $db = new mysqli('localhost', 'root', 'root', 'linki');
  5.  
  6. if (mysqli_connect_errno()) {
  7. echo 'Błąd: ';
  8. }
  9.  
  10.  
  11. for ($i=0; $i<count($linki); $i++){
  12. $przetwarzany_url = file_get_contents($linki[$i]);
  13.  
  14. preg_match( "/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $przetwarzany_url, $email);//email
  15.  
  16.  
  17. $zapytanie = "INSERT INTO urle set adres = '$email[0]' ";
  18.  
  19. $wynik = $db->query($zapytanie);


Ten post edytował Mikos 19.10.2011, 18:52:40
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 04:26