webForumDet fria alternativet

Bestämma textlängd

PHP

5 svar · 628 visningar · startad av magnumBonum

Medlem sedan maj 20076 inlägg
Frågan#1

Jag undrar om det är någon som har en kod för att bestämma hur många tecken som visas av en text, i det här fallet artikeltitlarna från DNs RSS.

Alltså, jag har lyckats få rss flödet att visas på min hemsida med radbrytning efter varje titel, men jag vill att titlarna ska ha bestämd längd, t.ex. om titeln är "Oväntad händelse under presidentvalet i Chile" ska endast "Oväntad händelse under president..." visas.

Tack på förhand!

Medlem sedan juni 20001 251 inlägg
#2

http://se2.php.net/strlen Returnerar längden på en sträng.
http://se2.php.net/substr Returnerar en del av en sträng.

<?php

function dotTruncate($string, $length="20")
{
		return (strlen($string) > $length) ? substr($string,0,$length).'...' : $string;
}

echo dotTruncate("Oväntad händelse under presidentvalet i Chile", 37);

?>
Medlem sedan maj 20076 inlägg
#3

nytt problem!

Tack för hjälpen!
Jag får det inte att funka dock har du lust att granska koden?

<?php
function dotTruncate($string, $length="20")
{
return (strlen($string) > $length) ? substr($string,0,$length).'...' :
$string;
}

define('MAGPIE_DIR', './magpierss/');
require_once(MAGPIE_DIR.'rss_fetch.inc');

$url = "http://www.dn.se/toppnyheter-rss";

if ( $url ) {
$rss = fetch_rss( $url );
foreach ($rss->items as $item) {
$href = $item['link'];
$title = $item['title'];
echo dotTruncate("<a class=style7 href=$href target=_blank>$title</a><br>", 37);
}
}
?>

Medlem sedan juli 20023 617 inlägg
#4
$title = dotTruncate($item['title'],37);
Medlem sedan juni 20001 251 inlägg
#5

Hej igen!

Du vill förmodligen bara korta av $title, annars kommer din html-kod bli avklippt.

<?php
function dotTruncate($string, $length="20")
{
return (strlen($string) > $length) ? substr($string,0,$length).'...' :
$string;
}

define('MAGPIE_DIR', './magpierss/');
require_once(MAGPIE_DIR.'rss_fetch.inc');

$url = "http://www.dn.se/toppnyheter-rss";

if ( $url ) {
$rss = fetch_rss( $url );
foreach ($rss->items as $item) {
$href = $item['link'];
$title = $item['title']; 
echo '<a class="style7" href="'.$href.'" target="_blank">';
echo dotTruncate($title, 37);
echo '</a><br>';
}
}
?>
Medlem sedan mars 20041 505 inlägg
#6

Här är en förkortningsfunktion för text som tar hänsyn till ord, dvs. den undviker att klippa mitt i ett ord.
Sen kan man även skicka med en "svans" som valfritt tredje argument, vilket läggs till i slutet efter förkortningen.

function str_truncate($input, $length, $tail = '') {
	if (!strlen($input) > $length) {
		return $input;
	} else {
		$output = substr($input, 0, $length);
		$dot = strrpos($output, '.');
		$space = strrpos($output, ' ');
		$output = substr($output, 0, ($dot > $space? $dot : $space)) . $tail;
		return $output;
	}
}
258 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)