Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak podzielić wyraz(ciąg znaków) na poszczególne znaki(litery)?
Giluś
post 21.07.2012, 09:37:14
Post #1





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


Cześć zastanawiam się jak podzielić taki ciąg znaków:
  1. $txt = 'Ala ma kota.';

na poszczególne znaki.

Chciałbym to zrobić w tablicy array i żeby to miało taki wygląd


  1. $t = 'Ala ma kota.';
  2. $t[0] // A
  3. $t[1] // l
  4. $t[2] // a
  5. $t[3] // - nic spacja
  6. $t[4] // m
  7. $t[5] // a
  8. $t[6] // - nic spacja
  9. $t[7] // k
  10. $t[8] // o
  11. $t[9] // t
  12. $t[10] // a
  13. $t[11] // .


Edit.:
Wiem że jak to tak wstawię to mi sie dobrze to wyświetli, ale czy jest jakiś inny sposób na wyświetlenie tego ?.

Dodam że maksymalny ciąg znaków będzie posiadał 26znaków.
Pozdrawiam i z góry dziękuje.

Ten post edytował Giluś 21.07.2012, 09:45:14
Go to the top of the page
+Quote Post
wNogachSpisz
post 21.07.2012, 10:29:00
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


  1. <?php
  2. $input = 'ala ma kota';
  3. $output = array();
  4. for ( $ i = 0, $j = strlen($input); $i < $j; $i++ ) {
  5. $output[] = $input{$i};
  6. }


Ten post edytował wNogachSpisz 21.07.2012, 10:29:16
Go to the top of the page
+Quote Post
ethann
post 21.07.2012, 10:39:20
Post #3





Grupa: Zarejestrowani
Postów: 56
Pomógł: 18
Dołączył: 7.04.2012

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


str_split

  1. <?php
  2.  
  3. $a = 'Ala ma kota.';
  4. $b = str_split($a, 1);
  5.  
  6. ?>
Go to the top of the page
+Quote Post
alegorn
post 21.07.2012, 11:34:29
Post #4





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


jesli potrzebujesz przejsc w petli po kazdym elemencie ciagu znakow mozesz tez skorzystac:
  1. $str = 'ala ma kota.';
  2. $i = str_length($str);
  3.  
  4.  
  5. for($c=0;$c<$i;++$i){
  6. echo $str{$i};
  7. }
Go to the top of the page
+Quote Post
wNogachSpisz
post 21.07.2012, 12:27:48
Post #5





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


A co to za funkcja "str_length" ?
Go to the top of the page
+Quote Post
irmidjusz
post 21.07.2012, 22:28:26
Post #6





Grupa: Zarejestrowani
Postów: 279
Pomógł: 60
Dołączył: 25.02.2012

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


Oczywiście, jak wszyscy wiemy, forumowiczowi alegorn chodziło o strlen.

A dobrać się do znaków łańcucha można bezpośrednio:

  1. $str = 'ala ma kota.';
  2. for($i = 0, $length = strlen($str); $i < $length; ++$i){
  3. echo $str[$i].'<br />';
  4. }


--------------------
there is much to be learned
Go to the top of the page
+Quote Post
darko
post 22.07.2012, 02:52:42
Post #7





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Jakby komuś str_split nie działało wink.gif
  1. $max = 26;
  2. $arr = array();
  3. foreach(explode(' ', $str) as $s)
  4. {
  5. for($i =0; $i < strlen($s); $i++)
  6. {
  7. if($i > $max)
  8. break;
  9. $arr[] = $s[$i];
  10. }
  11. $arr[] =' ';
  12. }


Ten post edytował darko 22.07.2012, 02:58:31


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
ethann
post 22.07.2012, 13:16:28
Post #8





Grupa: Zarejestrowani
Postów: 56
Pomógł: 18
Dołączył: 7.04.2012

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


Wszystko co piszecie jest bez sensu..
Giluś napisał na początku
Cytat(Giluś)
Wiem że jak to tak wstawię to mi sie dobrze to wyświetli, ale czy jest jakiś inny sposób na wyświetlenie tego ?.

Napisał to odnośnie wybierania pojedynczego znaku ze stringu.

Pytał się jak podzielić wyraz na poszczególne znaki, a konkretniej jak ze stringa zrobić tablicę.
Dostał na samym początku 2 najbardziej poprawne odpowiedzi, cała resztą którą napisaliście to albo autor jest tego świadom albo jest błędnie wykonana.

@darko
Twoje wykonanie jest błędne. Niezależnie jaka wartość będzie podana w zmiennej str na końcu zawsze doda się spacja.
Cytat(Giluś)
Dodam że maksymalny ciąg znaków będzie posiadał 26znaków.

Wnioskując z tego to albo autor przygotuje sobie tylko stringi składające się max z 26 znaków albo najprościej posłuży się funkcją substr.
W Twoim skrypcie ponoć ma się ograniczać długość do 26, ale nie dość, że jest on lekko wymagający [te 2 pętle + explode] to jeszcze podając ciąg znaków o długości równej 26 lub większy i tak otrzymamy tablicę 27 znakową - ostatnim znakiem zawsze będzie spacja.
Go to the top of the page
+Quote Post
darko
post 22.07.2012, 14:08:20
Post #9





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


offtopic.gif
Cytat(ethann @ 22.07.2012, 14:16:28 ) *
@darko
Twoje wykonanie jest błędne. Niezależnie jaka wartość będzie podana w zmiennej str na końcu zawsze doda się spacja.


Dodaj na końcu array_pop i będzie poprawne:
  1. $str = 'Ala ma kota a kot ma Ale';
  2. $max = 26;
  3. $arr = array();
  4. foreach(explode(' ', $str) as $s)
  5. {
  6. for($i =0; $i < strlen($s); $i++)
  7. {
  8. if($i > $max)
  9. break;
  10. $arr[] = $s[$i];
  11. }
  12. $arr[] =' ';
  13. }
  14. echo '<pre>';
  15. array_pop($arr);
  16. print_r($arr);

</OT>


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
szajens
post 21.01.2013, 19:02:09
Post #10





Grupa: Zarejestrowani
Postów: 150
Pomógł: 4
Dołączył: 3.01.2010

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


dobra Panowie, a co jeżeli znajdą się polskie litery? Jak to przeskoczyć? Bo polska litera składa się z dwóch znaków

edit:
dla potomnych
Kod
function str_split_unicode($str, $l = 0) {
    if ($l > 0) {
        $ret = array();
        $len = mb_strlen($str, "UTF-8");
        for ($i = 0; $i < $len; $i += $l) {
            $ret[] = mb_substr($str, $i, $l, "UTF-8");
        }
        return $ret;
    }
    return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
}


Ten post edytował szajens 21.01.2013, 19:30:24
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: 13.07.2025 - 13:03