Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ucinanie łańcuchów (php)
Forum PHP.pl > Forum > Przedszkole
MattY
witam, prawie w ogóle nie znam się na php, ale bardzo pilnie (tzn. na jutro) potrzebuję skrypt i tu moja wielka prośba czy mógłby mi ktoś takie coś napisać. Skrypt jest prosty ale jego opis bedzie chyba troche skomplikowany:

jest łańcuch znaków (jakiś tekst)
skrypt "oddziela" pierwsze 100 znaków i wstawia po nich 20 spacji, następnie oddziela kolejne 100 znaków i daje 20 spacji, i tak jeszcze 2 razy.
Po tym oddziela 32 znaki
i po tym znowu 100/20sp 100/20sp 100/20sp 100/20sp
czyli wynik jest:
Cytat
100 znaków
20 spacji
100 znaków
20 spacji
100 znaków
20 spacji
100 znaków
20 spacji
32 znaki

i znowu 100 znaków
20 spacji...
...




bardzo prosze o taki skrypt, przy okazji naucze sie jak takie cos konstruowac i mi sie to przyda, bo czesto robie cos z textem i musze robic recznie a tak to bym automat sobie zrobil smile.gif
strife
  1. <?php
  2. function fikuMiku( $tekst, $iloscZnakow, $iloscSpacji )
  3. {
  4. $spacja = NULL;
  5.  
  6. for( $i = 0; $i < $iloscSpacji ; $i++ )
  7. {
  8. $spacja .= "_"; // pseudospacja
  9. }
  10.  
  11. $arrTekst = str_split( $tekst );
  12.  
  13. for( $i = 0; $i < strlen( $tekst ); $i++ )
  14. {
  15. if ( ! ( $i % $iloscZnakow ) && $i != 0 )
  16. {
  17. $arrTekst[ $i ] = $arrTekst[ $i ] . $spacja;
  18. }
  19. }
  20.  
  21. return implode( "", $arrTekst );
  22. }
  23.  
  24. $string = "Ala ma ch**, jakis bardzo ciekawy tekst bum bum tara lala, Ala ma ch**, jak
    is bardzo ciekawy tekst bum bum tara lala"
    ;
  25.  
  26.  
  27. echo fikuMiku( $string, 100, 20 ) . '<br />' ;
  28.  
  29. echo fikuMiku( $string, 100, 20 ) . '<br />' ;
  30.  
  31. echo fikuMiku( $string, 100, 20 ) . '<br />' ;
  32.  
  33. echo fikuMiku( $string, 100, 32 ) . '<br />' ;
  34. ?>


Wynik
  1. Ala ma ch**, jakis bardzo ciekawy tekst bum bum tara lala, Ala ma ch**, jakis bardzo ciekawy tekst bu____________________m bum tara lala
  2. Ala ma ch**, jakis bardzo ciekawy tekst bum bum tara lala, Ala ma ch**, jakis bardzo ciekawy tekst bu____________________m bum tara lala
  3. Ala ma ch**, jakis bardzo ciekawy tekst bum bum tara lala, Ala ma ch**, jakis bardzo ciekawy tekst bu____________________m bum tara lala
  4. Ala ma ch**, jakis bardzo ciekawy tekst bum bum tara lala, Ala ma ch**, jakis bardzo ciekawy tekst bu________________________________m bum tara lala



Napewno da się to skrócić kilka razy, ale jak narazie skrypt działa tak jak chciałeś. Usprawnienie bądź napisanie od nowa zostawiam Tobie.smile.gif

~edit
tak się zastanawiam czy wordwrap po prostu nie wystarczy haha.gif

Pozdrawiam.
MattY
ta funkcja jest dobra ale jest jedna pomyłka, chodziło mi o dodatkowe 32 znaki a nie spacje, probowalem przerobic i mi cos nie chodziło

a z tym wordwrap sie troche zamotałem, bo robie:
  1. <?php
  2. $nowytekst = wordwrap($tekst, 100, "_20SPACJI_", 1);
  3. ?>

tylko, że ja chcę, żeby robiło
Cytat
LOOP 4 załamania po 100 znaków (i po nich 20 spacji) i po nich dodatkowo 32 znaki (bez spacji po nich) LOOP
i nie wiem zbytnio jak to skonstruować
strife
Cytat(MattY @ 22.10.2006, 23:23:51 ) *
ta funkcja jest dobra ale jest jedna pomyłka, chodziło mi o dodatkowe 32 znaki a nie spacje, probowalem przerobic i mi cos nie chodziło

Jakie znaki w takim razie? snitch.gif

Najlepiej weź jakiś tekst ( np. lipsum.com ), i pokaż nam wynik jaki chcesz otrzymać z niego/jak ten tekst ma być pokrojony.

Pozdrawiam, a raczej dobranoc, jutro odpiszę albo ktoś inny Ci dzisiaj jeszcze pomoże smile.gif
MattY
pisząc "znaki" mam na myśli znaki z orginalnego textu


wynik:
  1. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the____________________
  2. industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type ____________________
  3. and scrambled it to make a type specimen book. It has survived not only five centuries, but also th____________________
  4. e leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960____________________
  5. s with the release of Letraset s
  6. heets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldu____________________
  7. s PageMaker including versions of Lorem Ipsum. Contrary to popular belief, Lorem Ipsum is not simpl____________________
  8. y random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 200____________________
  9. 0 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up____________________
  10. one of the more obscure Latin w
  11.  
  12. itd.
siemakuba
  1. <?php
  2. $spaceChar = '_';
  3. $spaceCount = 20;
  4. $breakOffset= 100;
  5. $addOffset = 32;
  6. $arr = array();
  7.  
  8. for ($i = 0, $l = 1, $n = strlen($str); $i <= $n; $i += $breakOffset, $l++)
  9. {  
  10. if ($l%4)
  11. {
  12. $arr[] = substr($str,$i,$breakOffset);
  13. $arr[] = str_repeat($spaceChar,$spaceCount);
  14. }
  15. else
  16. {
  17. $arr[] = substr($str,$i,$breakOffset+$addOffset);
  18. $arr[] = str_repeat($spaceChar,$spaceCount);
  19. $i+= 32;
  20. }
  21. }
  22. ?>
Tak powinno być OK. Wysmażyłem posta że ho-ho przed chwilą, ale w między czasie wyjaśniłeś o co chodzi z 32 znakami. Stąd zmieniona wersja.

edit: swój teks podajesz oczywiści w zmiennej $str

pozdr.
MattY
sory za głupie pytanie ale jak wyświetlić wynik? tzn. wiem, że jest w tablicy $arr ale jak wyświetlić całą tablicę? bo w manualu tyle tych arrayów, że szok
lopik
np;

echo '<PRE>';
print_r($arr);
echo '</PRE>';

PS. Jak nie wiesz po co jest to <PRE> to zobacz jaki jest wynik z PRE a jaki bez winksmiley.jpg


np2.

  1. <?php
  2. foreach ($arr as $value) {
  3.  
  4. echo "$value<br>";
  5.  
  6. }
  7. ?>
siemakuba
Cytat(MattY @ 23.10.2006, 00:17:47 ) *
sory za głupie pytanie ale jak wyświetlić wynik? tzn. wiem, że jest w tablicy $arr ale jak wyświetlić całą tablicę? bo w manualu tyle tych arrayów, że szok

o rany rany, ależ ten manual obszerny! :)
  1. <?php
  2. echo implode('', $tablica);
  3. ?>

pozdr.
MattY
sprawdziłem kod siemakuby i jakby to powiedzieć żeby nie skłamać? IDEALNIE

lopik chodziło mi właśnie o ten 2 przykład, żeby nie było tych [1], [2]...




DZIENKI!!
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.