Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Problem z explode
Oklejek
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 30.01.2012

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


Witam, mam taki kod:
Plik users.ini:
  1. "nick" "haslo" "sqrnp" "a"

  1. $tablica = file(users.ini);
  2. for ($i=0; $i<count($tablica); $i++)
  3. {
  4. $tekst = preg_replace('/"/', '[;spacja]', $tablica[$i]);
  5. $t = explode('[;spacja]',$tekst);
  6. $nick = $t[1];
  7. $haslo = $t[3];
  8. $flagidostepu = $t[5];
  9. $flagikonta = $t[7];
  10. $nowe = '"'.$nick.'" "'.$haslo.'" "'.$flagidostepu.$_POST['klasa'].'" "'.$flagikonta.'"';
  11. if($nick == $nick2) $linia = $i;
  12. }

Wyrzuca mi błędy:
Notice: Undefined offset: 1 in C:\xampp\htdocs\sklep\config2.php on line 795

Notice: Undefined offset: 3 in C:\xampp\htdocs\sklep\config2.php on line 796

Notice: Undefined offset: 5 in C:\xampp\htdocs\sklep\config2.php on line 797

Notice: Undefined offset: 7 in C:\xampp\htdocs\sklep\config2.php on line 798
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tr!ckle
post
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 2
Dołączył: 12.05.2009

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


Poza tym nie lepiej zamiast preg_replace zrobić coś takiego?:

  1. //w petli
  2. $tekst = trim($tablica[$i], '"');
  3. $t = explode('" "', $tekst);


IMO szybciej i czytelniej (nie trzeba indeksować co druga wartość).
Poza tym w tym przypadku jeśli już upierasz sie przy replace, to użyj str_replace. Nie potrzebujesz używać wolniejszego preg_replace aby podmienić cudzysłowy na inny string.
Jeśli natomiast masz nieokreśloną odległość między słowami, to imo wygodniej użyć preg_split zamiast replace i explode.

Dodatkowo jak chcesz mieć pewność, że nie będzie błędów offsetu możesz skorzystać z funkcji next i current albo najzwyczajniej sprawdzać czy $t[x] nie jest puste.
Go to the top of the page
+Quote Post

Posty w temacie


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: 26.12.2025 - 13:38