[PHP] Wyswietlanie pierwszych 100 znakow

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
pavelw
Nowy
Nowy
Posty: 28
Rejestracja: wt gru 20, 2005 5:45 pm

[PHP] Wyswietlanie pierwszych 100 znakow

Post autor: pavelw »

Zalozmy ze do zmiennej $xxx jest przyisany jakis tekst ze 1000 znakami i jak zrobic zeby wyswietlilo mi tylko pierwsze 100 znakow?

1. W temacie, korzystając z tagów, określaj język, do którego odnosi się topic [poprawione]
2. Stosuj pojedyńczy znak wykrzyknienia/pytajnika (Forum to nie Gadu-Gadu) [poprawione]
iro
Moderator
Posty: 402
Rejestracja: pt gru 19, 2003 8:20 pm
Lokalizacja: Szczecin

Re: [PHP] Wyswietlanie pierwszych 100 znakow

Post autor: iro »

[php]<?php
echo substr($lancuch, 0, 99);
?>[/php]
pavelw
Nowy
Nowy
Posty: 28
Rejestracja: wt gru 20, 2005 5:45 pm

Re: [PHP] Wyswietlanie pierwszych 100 znakow

Post autor: pavelw »

a jak zrobic to samo tylko ze z wyrazami? np 20 pierwszych wyrazow zeby wyswietlalo
viraptor
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn cze 28, 2004 12:58 pm
Kontakt:

Re: [PHP] Wyswietlanie pierwszych 100 znakow

Post autor: viraptor »

1. W pętli zliczyć spacje, albo
2. Odpalić str_word_count($str, 2); a potem z otrzymanej tablicy wyciągnąć początek n'tego słowa. No i obciąć string przez substr().
iro
Moderator
Posty: 402
Rejestracja: pt gru 19, 2003 8:20 pm
Lokalizacja: Szczecin

Re: [PHP] Wyswietlanie pierwszych 100 znakow

Post autor: iro »

IMHO lepszym rozwiązaniem jest zastosowanie wywołania funkcji str_word_count z drugim parametrem równym 1 i z uwzględnieniem trzeciego parametru, w którym możnaby zdefiniować znaki interpunkcyjne i cyfry (podejrzewam, że też chciałbyś je wyświetlać).
Dlaczego z drugim parametrem równym 1? Bo gdy jest on równy 2 otrzymujemy tablicę, której indeksy stanowią pozycje danego wyrazu w całym łańcuchu znaków. A tak indeks liczony jest od 0 i łatwiej można sobie zdefiniować pętlę tworzącą łańcuch 20 wyrazów.
viraptor
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn cze 28, 2004 12:58 pm
Kontakt:

Re: [PHP] Wyswietlanie pierwszych 100 znakow

Post autor: viraptor »

Ale wtedy formatowanie zostaje rozbite. Nie mówiąc już o tym, że:
1. charlist został dodany w 5.1.0 dopiero
2. napewno chcesz jako słowo liczyć kropki, przecinki itd.? wtedy string "kropki, przecinki itd.?" zawiera 6 słów - jak je połączysz spacjami, to wyjdzie ciekawa papka...
iro
Moderator
Posty: 402
Rejestracja: pt gru 19, 2003 8:20 pm
Lokalizacja: Szczecin

Re: [PHP] Wyswietlanie pierwszych 100 znakow

Post autor: iro »

viraptor pisze:napewno chcesz jako słowo liczyć kropki, przecinki itd.? wtedy string "kropki, przecinki itd.?" zawiera 6 słów - jak je połączysz spacjami, to wyjdzie ciekawa papka...
Hmm... Z tego co się orientuję, to jeżeli mamy wyrażenie "kropki, przecinki itd.?" podanie charlisty spowoduje, że otrzymamy 3 a nie 6 wyrazów. Nie mam możliwości przetestowania tego, ale tak właśnie mi się wydaje.
viraptor pisze:charlist został dodany w 5.1.0 dopiero
No fakt, to może być problem.

Ale może spróbować inaczej?
Może lepszym rozwiązaniem byłoby takie zastosowanie funkcji explode()?
[php]<?php
explode(" ", $str, 20);
?>[/php]
Wtedy chyba otrzymamy tablicę zawierającą 20 wyrazów :)
viraptor
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn cze 28, 2004 12:58 pm
Kontakt:

Re: [PHP] Wyswietlanie pierwszych 100 znakow

Post autor: viraptor »

No popatrz ty się - rzeczywiście :)

Kod: Zaznacz cały

<?php print_r( str_word_count("kropki, przecinki itd.?", 1, ',.?')); ?>
Array (
    [0] => kropki,
    [1] => przecinki
    [2] => itd.?
)
Co jednak nie zmienia faktu, że formatowanie tnie, bo ignoruje taby / dodatkowe spacje. Chociaż to może być porządane - no cóż wybór należy do pavelw'a.
ODPOWIEDZ