Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]substr działa tylko dla pierwszego elementu tabeli
Forum PHP.pl > Forum > Przedszkole
Bojakki
Kod:
  1. $infs = nl2br('- aaa
  2. - bbb
  3. - cccc');
  4. $arr = explode('<br />',$infs);
  5.  
  6. $inf1 = preg_replace('/\s+/', ' ', trim(substr($arr[0],1)));
  7. $inf2 = preg_replace('/\s+/', ' ', trim(substr($arr[1],1)));
  8. $inf3 = preg_replace('/\s+/', ' ', trim(substr($arr[2],1)));
  9. echo $inf1.'<br />'.$inf2.'<br />'.$inf3;


Otrzymuje:

Cytat
aaa
- bbb
- cccc


zamiast


Cytat
aaa
bbb
cccc
aachi
Ależ substr działa prawidłowo... Sprawdź co masz w polach $arr[1] i $arr[2]... a ja Ci podpowiem, że masz na początku dużo spacji więc substr usuwasz pierwszą spację a reszta zostaje (także "-").
Poza tym później przy pomocy trim usuwasz wszystkie białe znaki z początku i końca, a następnie preg_replace zamieniasz wszystkie białe znaki na spację... Domyślam się, że ten kod nie ma żadnego praktycznego zastosowania i tylko tak się bawisz....

By osiągnąć wynik jak chcesz możesz użyć trim przed substr i będzie działało.

Ps. Przeglądarka dużą ilość spacji zamienia w jedną, więc jeśli wyświetlasz komunikaty w niej, to nie zobaczysz jak wiele znaków masz przed twoim - bbb, ale sprawdź długość stringa w $arr[1], to zobaczysz o czym mówię.

[EDIT] Poprawiłem literówkę.
Bojakki
http://1.bp.blogspot.com/-k2O-29wojpg/TXLB...9d667ba1a3b.jpg

Poradziłem sobie, ale nie wiem skąd te spacje się wzięły.
abort
Jak to skąd? A ile masz spacji od początku wiersza do pierwszego myślnika przed 'bbb' i 'ccc' Spójrz na listing, zaznacz treść. Są tam spacje? No są, więc...
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.