Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ucina bezlitośnie ciąg, jak zrobić, żeby nie, ucinal wyrazów, a zostawiał cały wyraz?
miedzna
post
Post #1





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


mam takie coś:

  1. <?php
  2. $text = "Microsoft zapowiedział wprowadzenie usługi przedpłaconych.";
  3. $stop = "5";
  4. $liczbaSlow = count(preg_split('/W+/', $text, -, PREG_SPLIT_NO_EMPTY));
  5. $wstep = substr($text,0,$stop);
  6. if($liczbaSlow > $stop) {
  7. echo $wstep." jakiś link do czytaj więcej...";
  8. }
  9. else {
  10.     echo $text;
  11. }
  12. ?>


jak zrobić, żeby mi nie ucinał wyrazu w środku, tylko zawsze wyświetlał np 10 wyrazów a na 11 ucinał, tylko zostawiając 10-ty wyraz w całości...

dzięki

Ten post edytował miedzna 15.12.2005, 16:25:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
splatch
post
Post #2





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


Tak jak mówiłem - można zrobić to przy użyciu wyrażeń regularnych. Będą one na pewno szybsze niż pętle.
  1. <?php
  2.  
  3. $string = "to jest bardzo wazny tekst";
  4. $after = 10;
  5.  
  6. // wytłumaczenie wyrażenia ;)
  7. // [dowolne znaki]{występujące x razy}[dowolne znaki występujące 0 i więcej razy][
    granica słowa]
  8. preg_match('/.{'.$after.'}.*?b/ms',$string,$m);
  9.  
  10. // spodziewany wynik
  11. // $m[0] = 'to jest bardzo';
  12.  
  13. ?>


Jeszcze prostszy odpowiednik
  1. <?php
  2.  
  3. $string = 'To jest bardzo wazny tekst';
  4. $after = 9;
  5.  
  6. echo substr($string,0,strpos($string,' ',$after));
  7. ?>


Ten post edytował splatch 16.12.2005, 09:49:10
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 13:07