Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ucinanie łańcuchów (php), tak jakby
MattY
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 18.04.2006

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
strife
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


  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.


--------------------
Go to the top of the page
+Quote Post
MattY
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 18.04.2006

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


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ć

Ten post edytował MattY 22.10.2006, 22:24:45
Go to the top of the page
+Quote Post
strife
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


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


--------------------
Go to the top of the page
+Quote Post
MattY
post
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 18.04.2006

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


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.


Ten post edytował MattY 22.10.2006, 22:50:11
Go to the top of the page
+Quote Post
siemakuba
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


  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.

Ten post edytował siemakuba 22.10.2006, 23:09:02
Go to the top of the page
+Quote Post
MattY
post
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 18.04.2006

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


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
Go to the top of the page
+Quote Post
lopik
post
Post #8





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


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. ?>


Ten post edytował lopik 22.10.2006, 23:35:43


--------------------
w3c & c++
Go to the top of the page
+Quote Post
siemakuba
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


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.
Go to the top of the page
+Quote Post
MattY
post
Post #10





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 18.04.2006

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


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

Ten post edytował MattY 22.10.2006, 23:47:56
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 Aktualny czas: 19.08.2025 - 16:09