Dnešný článok obsahuje ďalší PHP trik a tým je vytváranie html liniek v obyčajnom texte pomocou PHP. Je to len moja jednoduchá funkcia a vytvára linky len pre URL, ktoré sa začínajú reťazcom http://.
Na vytváranie liniek v texte som si napísal funckiu create_links()
, ktorá je jednoduchá, ale funkčná. Tu je jej kód:
function create_links($str) { preg_match_all('|(http://[^ \n]*)|s', $str, $a); /* $a[1] je pole všetkých nájdených URL a funckia array_unique() nám zabezpečí, aby sa linky vytvorili korektne, aj keď bude v texte niektorá URL viac krát */ $a[1] = array_unique($a[1]); /* každú nájdenú URL nahradíme odkazom */ foreach($a[1] as $url) { $str = str_replace($url, '<a href="' . $url . '">' . truncate($url, 40) . '</a>', $str); } return $str; }
Ako som spomínal funkcia je veľmi jednoduchá a vytvára linky len pre URL začínajúce sa reťazcom http://. Takisto funkcia nevie ošetriť napríklad to, keď je URL zadaná ako posledné slovo vo vete a za ňou na sleduje bodka. Vtedy sa bodka stane súčasťou odkazu…
Ak by ste však mali záujem o väčšiu funkcionalitu tak vám odporúčam použiť google a hľadať reťazec make clickable +php a isto toho nájdete viac než dosť.
Skrátenie reťazca v PHP
A ak ste boli pozorní, tak ste si isto všimli, že vo vnútri funkcie create_links()
používam ďalšiu moju funkciu truncate()
, ktorá skráti reťazec (v našom prípade url) na požadovanú dĺžku a pridá na koniec reťazca ‚…‘. Tu je jej kód:
function truncate($str, $width) { if(mb_strlen($str, 'UTF-8') <= $width) return $str; $rstr = mb_strimwidth($str, 0, $width - 3, null, 'UTF-8'); // treba nastaviť správne kódovanie $rstr .= '...'; return $rstr; }
A čo WordPress ?
Ak chcete danú a ešte komplexnejšiu funcionalitu využiť vo WordPresse, tak môžete rovno použiť funckiu make_clickable()
, ktorá je súčasťou jeho API, avšak ak by ste ju chceli použiť samostatne vo vašom kóde mimo WordPressu, tak vám, želám veľa nervov, pretože závisí na mnohých iných WordPress funckiách ;).
Pridaj komentár