Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] jak edytować element w tablicy?
Forum PHP.pl > Forum > Przedszkole
marbi
witam,
czy można pojechać str_replace po jednym dokładnie ostatnim elemencie w tablicy?

  1. #znk - znaki na koncu
  2. $ilosc_znk = count($tablicaznakinakoncu);
  3. $minus_znk = $ilosc_znk - 1;
  4. $ofset_znk = $tablicaznakinakoncu[$minus_znk];
  5. $zastap_znk = array(',','-',':','!','?',';');
  6. $wyczyszczone_znk = str_replace($zastap_znk, "", $ofset_znk);
  7. $n = count($tablicaznakinakoncu);
  8. for ($i=0;$i<$n; $i++)
  9. $contenttextfinal .= $tablicaznakinakoncu[$i].' ';
  10. $contenttextfinal = rtrim($contenttextfinal);


i teraz jak robię

  1. echo '<pre>';
  2. print_r($tablicaznakinakoncu);
  3. echo '</pre>';


to nie bierze mi tego pod uwagę tongue.gif dalej mam te dziwne znaki na końcu
abort
Podkręć jasność wypowiedzi. Co chcesz zrobić, o jakich znakach na końcu mówisz, pokaż dane wejściowe.
http://rtfm.killfile.pl/#przyklady
marbi
do tablicy tafiają wyrazy po których jest przecinek, średnik etc
chciałbym, żeby ostani element w tablicy nie miał takiego znaku ale jednocześnie sam wyraz pozostał tylko bez znaków interpunkcyjnych, niestety pozostałe wyrazy znajdujące się w innych elemntach tablicy pownny mieć zachowane swoje znaki interpunkycjne
przykłady wyrazów:
wyraz,
wyraz!
wyraz;
wyraz-

jeżeli się trafi taki wyraz ze znakiem jako ostatni element tablicy muszę usunąć ten znak zostawiając sam wyraz np:
jest
  1. wyraz,

powinno być
  1. wyraz


pomyślalem, że zrobię to przez funkcję str_replace ponieważ całą tabicę ładnie potrafi przeszukać i zmienić, ale w tym wypadku chodzi mi tylko o jeden element, ostatni i nie mam żadnych błędów a te przecinki, wykrzykniki itd dalej się pokazują po przejściu pętlą po tablicy

contenttext111 = to dane z formularza, po prostu jakiś tekst, nie będę wiedział jaki bo to będzie dowolny jaki użytkownik wpisze

  1. $tablicaznakinakoncu = explode(" ", $contenttext111);
  2. #znk - znaki na koncu
  3. $ilosc_znk = count($tablicaznakinakoncu);
  4. $minus_znk = $ilosc_znk - 1;
  5. $ofset_znk = $tablicaznakinakoncu[$minus_znk];
  6. $zastap_znk = array(',','-',':','!','?',';');
  7. $wyczyszczone_znk = str_replace($zastap_znk, "", $ofset_znk);
  8. $n = count($tablicaznakinakoncu);
  9. for ($i=0;$i<$n; $i++)
  10. $contenttextfinal .= $tablicaznakinakoncu[$i].' ';
  11. $contenttextfinal = rtrim($contenttextfinal);
abort
Nie debugowałem kodu, ale wydaje mi się, że zrobiłeś to, co chciałeś.
Problem jest taki, że przypisałeś to do zmiennej, której nigdzie nie uzywasz ($wyczyszczone_znk).
marbi
też to zauważyłem ale nie wiem jak teraz zmusić się do jej użycia smile.gif
wcześniej jaki zrobiłem:
  1. $tablicaliterkowa = explode(" ",$rtrimspacja); //ponownie calos do tablicy bedziemy szukac pojedynczych liter
  2. $iloscwtablicy = count($tablicaliterkowa); //licze liczbe
  3. $minusjeden = $iloscwtablicy - 1; //zmniejszam o jeden
  4. $zawartoscofsetu = $tablicaliterkowa[$minusjeden]; //deklaruje wartosc
  5. $liczbaznakow = strlen($zawartoscofsetu); //zlicza liczbe znakow
  6. if ($liczbaznakow <= 3) //jezeli mniej lub rowne 3
  7. unset($tablicaliterkowa[$minusjeden]); //usuwa ustatni
  8. $n = count($tablicaliterkowa); //wyswietal tablice
  9. for ($i=0;$i<$n; $i++) //c.d.
  10. $contenttext111 .= $tablicaliterkowa[$i].' '; //c.d.
  11. $contenttext1111 = rtrim($contenttext111); //usuwa spacje na koncu


to działa z usuwaniem pojedyńczej literki na końcu, czyli w ostatnim elemencie tabblicy smile.gif
abort
Normalnie - przyypisz ją do ostatniego elementu tablicy.
Nazwę tablicy znasz, liczbę elementów też, w związku z tym indeks ostatniego elementu też znasz.
marbi
trochę nie do końca, powtarza mi się to już 8x więc zrobiłęm z tego funkcję:

  1. function mixtext($textzformularza,$iloswyrazow)


w zależności od zapotrzebowania liczba elementów się zmienia, przez funkcję przechodzę 8x z róznymi wartościami, 25, 30, 40, 45, max 70

  1. array_splice($tablicatext1, $iloswyrazow); //ograniczamy tablice do konkretnej ilosci



sądzę, że nawet w funkcji będę mógł zrobić jak napiasałeś, dziękuję i pozdrawiam
wNogachSpisz
  1. $array[ count($array) - 1 ] = rtrim( $array[ count($array) - 1 ], '.,-;' );
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.