PHP - orezanie textoveho vystupu na x znakov

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
esso82
Začátečník
Začátečník
Uživatelský avatar
Registrován: 26. pro 2006
Bydliště: Plymouth (UK)
Kontaktovat uživatele:

PHP - orezanie textoveho vystupu na x znakov

Příspěvek 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
loading...

PSN ID: esso82
bubanek
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 24. dub 2005
Bydliště: D1

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek od bubanek »

tohle by mělo pomoct
http://cz2.php.net/manual/en/function.substr.php

PS: za ten podpis tě admini zabijou ;)
esso82
Začátečník
Začátečník
Uživatelský avatar
Registrován: 26. pro 2006
Bydliště: Plymouth (UK)
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek od esso82 »

preco si myslis ze ma zabiju?
loading...

PSN ID: esso82
myom
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 11. úno 2006
Bydliště: Praha

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek od myom »

co si precist pravidla? ;-)
*:-.,_,.-:*'``'*:-.,_,.-:*'``'*:-.,_,.-:*'``'*:-.,_,.-:*'``'*:-.,_,.-:*
prave si ctete krasny, uzasny, inteligentni, gradiozni podpis a velice ho obdivujete! touzite po nem! chcete ho! uz bez nej nemuzete byt a radi byste ho videli i pod svymi prispevky! a co ja udelam? napisu: ol rajt ryzvd (c) myom :-P
*:-.,_,.-:*'``'*:-.,_,.-:*'``'*:-.,_,.-:*'``'*:-.,_,.-:*'``'*:-.,_,.-:*
esso82
Začátečník
Začátečník
Uživatelský avatar
Registrován: 26. pro 2006
Bydliště: Plymouth (UK)
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek od esso82 »

2 bubanek: dik bracho, uz to fachci....

2 myom: idem na to kuknut.....
loading...

PSN ID: esso82
esso82
Začátečník
Začátečník
Uživatelský avatar
Registrován: 26. pro 2006
Bydliště: Plymouth (UK)
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek od esso82 »

tak uz som si ten podpis upravil. . . dufam ze tri riadky textu vyhovuju. . .
loading...

PSN ID: esso82
esso82
Začátečník
Začátečník
Uživatelský avatar
Registrován: 26. pro 2006
Bydliště: Plymouth (UK)
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek 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
loading...

PSN ID: esso82
bubanek
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 24. dub 2005
Bydliště: D1

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek od bubanek »

http://cz2.php.net/strlen

Kód: Vybrat vše

if (strlen($text) > 30) {
orezat
}
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek 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 :roll: . (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.
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
esso82
Začátečník
Začátečník
Uživatelský avatar
Registrován: 26. pro 2006
Bydliště: Plymouth (UK)
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek 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)
loading...

PSN ID: esso82
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek 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).
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
esso82
Začátečník
Začátečník
Uživatelský avatar
Registrován: 26. pro 2006
Bydliště: Plymouth (UK)
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek 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
loading...

PSN ID: esso82
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek 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 :roll: . Tohle by mělo fungovat.
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
esso82
Začátečník
Začátečník
Uživatelský avatar
Registrován: 26. pro 2006
Bydliště: Plymouth (UK)
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek od esso82 »

nevadi....aj tak zavidim ze to tak ovladas :-D . . .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
...
loading...

PSN ID: esso82
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek 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?
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
esso82
Začátečník
Začátečník
Uživatelský avatar
Registrován: 26. pro 2006
Bydliště: Plymouth (UK)
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek 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 :lol:

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?
loading...

PSN ID: esso82
Teuzz
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 25. zář 2004
Bydliště: Liberec, Praha
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek 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
Burn in hell.
esso82
Začátečník
Začátečník
Uživatelský avatar
Registrován: 26. pro 2006
Bydliště: Plymouth (UK)
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek 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
loading...

PSN ID: esso82
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: PHP - orezanie textoveho vystupu na x znakov

Příspěvek 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š.
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
Odpovědět

Zpět na „Programování a web“