Stránka 1 z 1
PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 12:39
od esso82
caute...v php som zaciatocnik...a potreboval by som vediet ako vypisat textovy vystup na napriklad 30 znakov, premenna ide z array, ktory bol ziskany z databaze, tu je kusok toho konecneho kodu....nesmejte sa..pls......viem ze sa to urcite da urobit aj inak....
Kód: Vybrat vše
$template->assign_block_vars('latest_hot_topics',
array(
'TITLE' => censor_text($row['topic_title']),
'CATHEGORY' => censor_text($row2['forum_name']),
'U_VIEW_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", $infos),
'U_VIEW_CAT' => append_sid("{$phpbb_root_path}viewforum.$phpEx", $infos_cat)
)
konkretne potrebujem orezat ten vystup v premennej CATHEGORY, ten potom ide do ineho subor, ktory je include na konecnu stranku....tu je kusok toho suboru....
Kód: Vybrat vše
<b>Najhorúcejšie témy:</b><br /><hr />
<!-- BEGIN latest_hot_topics -->
<a href="{latest_hot_topics.U_VIEW_POST}"><b><font color="#0075B0">{latest_hot_topics.TITLE}</font></b><br /></a>
v kategórii: <a href="{latest_hot_topics.U_VIEW_CAT}">{latest_hot_topics.CATHEGORY}<br /></a>
<!-- END latest_hot_topics -->
vie mi niekto poradit pls?...nieco som uz skusal, ale nefungovalo to bohvieako....dakujem
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 13:22
od bubanek
tohle by mělo pomoct
http://cz2.php.net/manual/en/function.substr.php
PS: za ten podpis tě admini zabijou

Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 15:22
od esso82
preco si myslis ze ma zabiju?
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 15:26
od myom
co si precist pravidla?

Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 15:34
od esso82
2 bubanek: dik bracho, uz to fachci....
2 myom: idem na to kuknut.....
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 15:51
od esso82
tak uz som si ten podpis upravil. . . dufam ze tri riadky textu vyhovuju. . .
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 15:57
od esso82
inak este jednu vec potom potrebujem spravit . . .
. . .dat tam if, ze ked bude textove pole dlhsie ako xx znakov, tak ho oreze na x znakov , lebo tam by som chcel pridat '...' akoze ten text pokracuje
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 16:40
od bubanek
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 17:28
od OndraSter
No, takhle to utne třeba uprostřed slova..
Kód: Vybrat vše
function kousek ( $text, $delka, $pridej = '' ) {
if ( strlen ( $text ) < $delka ) return $text;
$orez = substr ( $text, 0, $delka );
return substr ( $orez, 0, strrpos ( $orez, ' ' ) ) . $pridej;
}
resp pokud má phpBB UTF-8:
Kód: Vybrat vše
function mb_kousek ( $text, $delka, $pridej = '' ) {
if ( mb_strlen ( $text, 'UTF-8' ) < $delka ) return $text;
$orez = mb_substr ( $text, 0, $delka, 'UTF-8' );
return mb_substr ( $orez, 0, mb_strrpos ( $orez, ' ', 'UTF-8' ), 'UTF8' ) . $pridej;
}
Akorát to předpokládá že se nějaká mezera v těch $delka znaků najde

. (Což při 50+ znacích je vždy.)
// A jestli jsem dobře pochopil jak jsi to popsal, tak řádek
Kód: Vybrat vše
'CATHEGORY' => censor_text($row2['forum_name']),
nahradíš
'CATHEGORY' => kousek(censor_text($row2['forum_name'])),
(resp při UTF-8:)
'CATHEGORY' => mb_kousek(censor_text($row2['forum_name'])),
Akorát musíš někam za <?php na začátku souboru dát tu funkci, co jsem napsal výše.
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 17:43
od esso82
tak som to skusal, ale nejako mi ta podmienka nefunguje, pretoze ta premenna je v poli, takze mi napise unexpected IF, a pokial to dam pred vytvorenim pola, tak to nespravi ziadny efekt, tu su obidve verzie, mozes sa na to prosim mrknut?
pred array:
Kód: Vybrat vše
$sql2 = 'SELECT forum_name FROM ' . FORUMS_TABLE . ' WHERE forum_id = ' . $row['forum_id'];
$result2 = $db->sql_query($sql2);
$row2 = $db->sql_fetchrow($result2);
$infos_cat = 'f=' . $row['forum_id'];
if (strlen($forum_name) > 40) substr_replace($forum_name,'...',40,-1);
$template->assign_block_vars('latest_hot_topics',
array(
'TITLE' => censor_text($row['topic_title']),
'CATHEGORY' => icensor_text($row2['forum_name']),
'U_VIEW_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", $infos),
'U_VIEW_CAT' => append_sid("{$phpbb_root_path}viewforum.$phpEx", $infos_cat)
v array:
Kód: Vybrat vše
$sql2 = 'SELECT forum_name FROM ' . FORUMS_TABLE . ' WHERE forum_id = ' . $row['forum_id'];
$result2 = $db->sql_query($sql2);
$row2 = $db->sql_fetchrow($result2);
$infos_cat = 'f=' . $row['forum_id'];
$template->assign_block_vars('latest_hot_topics',
array(
'TITLE' => censor_text($row['topic_title']),
'CATHEGORY' => if (strlen($forum_name) > 40) substr_replace(censor_text($row2['forum_name']),'...',40,-1);,
'U_VIEW_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", $infos),
'U_VIEW_CAT' => append_sid("{$phpbb_root_path}viewforum.$phpEx", $infos_cat)
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 19:52
od OndraSter
To druhý nemůže chodit, do array () by jsi musel dát podmínku jinou (teď si nemůžu vzpomenout jak se jí říká, ta podmínka ? ano : ne).
A proč nepoužiješ to moje, který ti to ořízne i na poslední mezeru? Stačí na začátek souboru dát to function kousek (..) { ... } a pak jen:
'CATHEGORY' => kousek(icensor_text($row2['forum_name'])),
(resp mb_ v případě UTF-8, viz můj předchozí post).
To první má řešení:
if (strlen($forum_name) > 40) substr_replace($forum_name,'...',40,-1);
změň na
if (strlen($row2['forum_name']) > 40) substr_replace($row2['forum_name'],'...',40,-1);
a mělo by to jít (pokud si jsi jistý tím substr_replace, opravil jsem technickou chybu, ne praktickou).
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 20:50
od esso82
no skusil som to ako si radil, ale pise ze chyba argument 2, pisal som ze som zaciatocnik, takze ani velmi neviem o com teda toci, dufam ze som spravil spravne, , , nastavil som si $delka="40"; a potom vo funkcii namiesto $text som dal $row2
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 21:30
od OndraSter
Ne. Na začátek skriptu dej:
Kód: Vybrat vše
function mb_kousek ( $text, $delka, $pridej = '' ) {
if ( mb_strlen ( $text, 'UTF-8' ) < $delka ) return $text;
$orez = mb_substr ( $text, 0, $delka, 'UTF-8' );
return mb_substr ( $orez, 0, mb_strrpos ( $orez, ' ', 'UTF-8' ), 'UTF8' ) . $pridej;
}
a pak řádek
Kód: Vybrat vše
'CATHEGORY' => icensor_text($row2['forum_name']),
změň na:
'CATHEGORY' => mb_substr(icensor_text($row2['forum_name']), 40, '...'),
Sry, zapomněl jsem ve spěchu že těch parametrů je vlastně víc

. Tohle by mělo fungovat.
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 22:00
od esso82
nevadi....aj tak zavidim ze to tak ovladas

. . .a este jedna vec k mojmu problemu....
potrebujem vybrat z tabulky fora, ale nechcem tam fora s ID 10, 18, 33 a pod...
... napisal som to takto:
toto je vytvorenie premennej, kde si uzivatel zadefinuje, ktore fora tam nechce mat zahrnute:
Kód: Vybrat vše
$forums_excluded2 = "9, 10, 11, 28, 29, 30"; //for "Most viewed topics"
a tu je dotaz:
Kód: Vybrat vše
$sql = 'SELECT topic_title, forum_id, topic_id, topic_views
FROM ' . TOPICS_TABLE . '
WHERE topic_approved = 1
AND topic_type = 0
AND forum_id != ( "' . $forums_excluded2 . '" )
ORDER BY topic_views DESC';
ono to funguje tak, ze dotaz vyberie vsetky fora, nevyberie iba prve zadane cislo v $forums_excluded, vsetky ostatne ignoruje, takze v mojom pripade je to vlasne
...
AND forum_id != 9
...
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 22:44
od OndraSter
Kód: Vybrat vše
AND forum_id != ( "' . $forums_excluded2 . '" )
změň na
AND forum_id NOT IN ( ' . $forums_excluded2 . ' )
a mělo by to být ono.
To zkracování tedy funguje?
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: ned 28. zář 2008, 22:55
od esso82
ja som debil...to s tym NOT IN som skusal, ale nenapadlo ma ze tie uvodzovky tam nesmu byt...nevadi...uz to funguje.....dik moc.....rozmyslal som nad tym asi 2 hodiny
a k tej funkcii...este som to neskusal, lebo tomu vobec nechapem .... tie premenne dlzka text a tak dalej, to mam odkial vziat?.....ved ich musim najprv zadefinovat, inak budu prazdne, nie?
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: pon 29. zář 2008, 07:15
od Teuzz
Doporučuju nezkoušet různé varianty a podívat se do příslušné sekce na webu W3C, jak ta syntaxe vypadá.
http://www.w3schools.com/sql/sql_where.asp
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: pon 29. zář 2008, 17:08
od esso82
skusanim roznych variant som sa naucil ako to ma byt a ako to nesmie byt, ale aj tak dakujem za tu adresu, maju tam vsetky prikazy pekne vysvetlene aj s prikladmi, coho si cenim najviac...este raz vdaka
Re: PHP - orezanie textoveho vystupu na x znakov
Napsal: pon 29. zář 2008, 21:04
od OndraSter
Nee, akorát tu mojí funkci mb_kousek dej na začátek souboru a ten řádek s tím CATHEGORY uprav na to, co jsem napsal, mělo by to fungovat jak chceš.