Newsgroup: it.comp.www.php
Titolo: Troncare news....

Ciao ragazzi...
Dovrei far visualizzare solo i prima 100 caratteri di una variabile di testo
(news)
Script attuale non ancora modificato:
la variabile si chiama: news_long
<?PHP
while($i < $num)
{
 echo '<tr><TD width="100%" bgcolor=#ffffff valign="middle" align="left">';
 echo mysql_result($result,$i,"news_day");
 echo ".";
 echo mysql_result($result,$i,"news_month");
 echo ".";
 echo mysql_result($result,$i,"news_year");
 echo ' - <A HREF=visualizza.php?uid=';
 echo mysql_result($result,$i,"uid");echo " title='visualizza news'><b>";
 echo mysql_result($result,$i,"news_short");
 echo "</b></a><br></td></tr>";
 $i++;
};
?>
Ho trovato questa "funzione"...
La computazione nei template: String Modifier
Il template che useremo nel primo caso (esempio_7_1.tpl)
<Esl:SBlock name="Main">
<html>
<head>
<title>#$TITLE#</title>
</head>
<body>
<h1>#$TITLE#</h1>
<ul>
<Esl:DBlock name="News">
<li><b>#$NEWS['TITLE']#</b>: #$NEWS['BODY']#
<Esl:SModifier type="truncate" length="200" end_text="... "/>
<a href="www.foo.dom/news?newsId=#$NEWS['ID']#">Prosegue</a>
</li>
</Esl:DBlock>
</ul>
</body>
</html>
</Esl:SBlock>
La computazione nei template: String Modifier
String Modifier ::= <Esl:SModifier [ type="NomeDellaFunzione" ]
[ name="NomeRelativo" ] [ nomeAttributo="ValoreAttributo" ...] >
function EvaSModTruncate(&$vars, &$content) {
// $vars contiene tutti gli attributi dichiarati
// $content contiene la stringa che deve essere modificata
...
// Ritorna la stringa modificata
return $content;
}
ma... non ho capito un tubazzooooooooooooooo........... :(

Per stampare i primi cento caratteri devi usare substr:
$testo = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus
tincidunt.
Curabitur orci. Donec in diam at tellus vestibulum blandit. In a est at arcu
malesuada venenatis. Pellentesque mattis felis a ipsum. Nam vel felis non
dui
vestibulum egestas. Donec nec ipsum. Vivamus luctus dui id leo. Nulla
facilisi.
Proin eu est.";
$rest = substr("$testo", 0, 100);
print $rest;
--
Cristian aKa Cc
--

 di testo (news)
Oltre a quanto suggerito da Cristian ti posto una funzione che utilizzo
da molto tempo:
<?php 
$testo = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Vivamus
tincidunt.
Curabitur orci. Donec in diam at tellus vestibulum blandit. In a est at
arcu
malesuada venenatis. Pellentesque mattis felis a ipsum. Nam vel felis
non
dui
vestibulum egestas. Donec nec ipsum. Vivamus luctus dui id leo. Nulla
facilisi.
Proin eu est.";
function small_text ($text = "", $word_count = false, $text_length =
false) {
	$return = "";
	$join = "";
	$words = explode (" ", $text);
	$i = 0;
	foreach ($words as $word) {
		$i++;
		if (($word_count !== false) && ($word_count <= $i)) {
			$return .= $join . $word;
			break;
		}
		if (($text_length !== false) && (strlen ($return . $join . $word) >=
$text_length)) {
			break;
		}
		$return .= $join . $word;
		$join = " ";
	}
	return $return;
}
print (small_text ($testo, 4));
print ("<br>");
print (small_text ($testo, false, 20));
?>
In pratica restituisce un testo di un numero massimo di parole oppure
di una lunghezza massima senza spezzare l'ultime parola.
-- 
I am what I am, I do what I can
Cerchi un programmatore PHP/MySQL? 
http://url.repository.biz/go/1Y
Vuoi supportarmi? 
http://url.repository.biz/go/3E
L'uomo, conscio di sbagliare, persevera.