Výpis určitého počtu slov v PHP

Klíčová slova: substr_word, substr_word_count, explode, substr, PHP
Rubrika: PHP

Následující dvě procedury vám pomohou získat z libovolného textu první X slov. Jde o procedury, které jsem nazval substr_word a substr_word_count. Obě jsou postaveny na využití funkce explode.

Procedury jsou hlavně jednoduché. Takže od nich nečekejte zázraky. Jsou postaveny na principu, který vychází z předpokladu, že slova jsou oddělena mezerou. Neumí si tedy poradit s tvrdou mezerou. Nečekejte ani, že by uměly správně (ne)oddělit předložky či spojky. Ty jsou prostě brány jako jedno slovo. Procedury neřeší ani seskupení slov v závorkách nebo pod uvozovkami. Jsou to prostě jednoduché procedury v PHP.

První procedura, pojmenovaná substr_word_count, jednoduše vypíše prvních X slov ze zadaného textu.

function substr_word_count($text, $word_count) 
{
$return_text = "";
$text = explode(" ", $text);
for($i=0; $i<$word_count; $i++)
{
$return_text .= " ".$text[$i];
}
return $return_text;
}

Použití:

$perex = 'Toto je celý text obsahující více jak deset celých slov. 
Chci z něho získat prvních deset slov.'
;
$perex = substr_word_count($perex,10);
echo $perex;
// výsledek = Toto je celý text obsahující více jak deset celých slov.

Druhá procedura, pojmenovaná substr_word, vychází z potřeby občas text oříznout od určitého znaku na zhruba cca XXX znaků. Funguje tedy podobně jako substr, ale navíc text zprava doplní o další znaky až po následující mezeru.

function substr_word($str, $start, $length) 
{
if (!isset($length)) $length= strlen($str);
$return_text = substr($str,$start,$length);
$return_text2 = substr($str,$start+$length);
$return_text2 = explode(" ", $return_text2);
$return_text .= $return_text2[0];
return $return_text;
}
 

Použití:

$perex = '1. Toto je celý text obsahující více jak sto písmen včetně mezer.
Chci z něho prvních padesát písmen, od třetí pozice,
plus dokončení na celé následující slovo.'
;
$perex = substr_word($perex,3,50);
echo $perex;
// výsledek = Tohle je celý text obsahující více jak sto písmen včetně

Obě procedury můžou samozřejmě být napsány i jinak. Berte to jako příklad jak k danému problému přistupovat.

Autor: Jiří Provazník
Datum vydání: 15.03.2009 | Zobrazeno: 21214
Permanentní odkaz: Výpis určitého počtu slov v PHP

Komentáře (2)
Skvělé jednoduché díky.
Autor:Zdendys79
Hľadal som rýchle riešenie na perex, lebo sa mi nechcelo rozmýšľať. Nakoniec som ale ajtak musel, lebo to hádzalo neexistujúci offset. Pred samotným skracovaním by mohla funkcia overiť, že vstupný text je dlhší ako počet slov, ktoré z neho chceme vybrať. Inak to bude v tom cykle iterovať nad $text[50] aj keď vstupný text má len tri slová a tento index v poli samozrejme nie je. :)
Autor:han5vk
Přidej vlastní komentář:
Následující (běžně neviditelná) pole slouží pro vnitřní identifikaci systému. Pokud je vyplníte nebude možné váš požadavek na straně serveru zpracovat:
URL:
contents:
Website:
Pro odeslání vašeho komentáře použijte tlačítko "Odeslat". Toto tlačítko nepoužívejte:

Následující položky je vhodné vyplnit:
Jméno :
Email :
Web :
Místo :
Hodnocení:
Hodnocení jako pomocí hvězdiček
1/5= nejhorší, 5/5=nejlepší