Ik ben bezig om een script die rss feeds laat zien om te schrijven zodat er in de output meer mogelijkheden zitten om deze aangepast te laten zien.
Nu loop ik tegen een probleem aan waar ik even geen oplossing meer voor weet.

Ik heb de mogelijkheid toegevoegd om het aantal tekens op te geven die ik laat zien in de feed, hiervoor gebruik ik $tekens. Gemakshalve heb ik deze3 in het script hieronder opgegeven als zijnde 250. Nu geeft die enkel 5 tekens in plaats van de gevraagde 250, en geen idee hoe dat komt heb al geprobeerd met (int)$tekens etc etc maar dat gaf geen oplossing. Vul ik i.p.v. $tekens gewoon het getal 250 in op de laatste regel dan werkt het wel.

Iemand enig idee wat ik verkeerd doe ?




// De functie die de feed afkapte en ...... aan het einde toevogd //
function troncaTesto($testo, $caratteri) { if (strlen($testo) <= $caratteri) return $testo; $nuovo = wordwrap($testo, $caratteri, "|"); $nuovotesto=explode("|",$nuovo); return $nuovotesto[0]."..........."; }

function endElement($parser, $name) {

global $insideitem, $tag, $title, $description, $link;
if ($name == 'ITEM') {
printf('<li><strong><a href=\'%s\' target="_blank">%s</a></strong><br>',trim($link),trim($title));

// Roept de functie aan werkt wel met 250 ! niet met $tekens
$description = troncaTesto($description, $tekens);


m vr gr
Hans
Vervang troncaTesto door [php]substr[/php].
Dat zou kunnen maar dan wordt de functie niet meer uitgevoerd
Dat komt omdat substr iets anders werkt. Die moet drie argumenten hebben, zie de handleiding. Het komt ongeveer neer op substr($description, 0, $tekens).
Ik begrijp wat je bedoelt, ik zal hem even omschrijven dan zou de functie kunnen vervallen. Laat het zo wel even zien.

Maar dan blijft nog mijn vraag als ik $tekens =250 opgeef waarom neemt de functie die dan niet over ?
Probleem blijft met subnstr()
Output is nu niet meer 5 tekens maar 0 tekens ??

<?php
if( $tekens =='' ) {
$tekens = '250';
}

function endElement($parser, $name) {

global $insideitem, $tag, $title, $description, $link;
if ($name == 'ITEM') {
printf('<li><strong><a href=\'%s\' target="_blank">%s</a></strong><br>',trim($link),trim($title));


$description = substr($description, 0, $tekens);
$description = $description.".......";
?>

[size=xsmall]Toevoeging op 27/02/2011 17:36:28:[/size]

Ook het declareren van $tekens in de scope van startElement en endElement, heeft niet direct geleidt tot een oplossing. Is het niet mogelijk om $tekens al eerder global te maken ?


<?php
function startElement($parser, $name, $attrs) {
global $insideitem, $tag, $title, $description, $link, $tekens;
if ($insideitem) {
$tag = $name;
} elseif ($name == 'ITEM') {
$insideitem = true;
}
}

function troncaTesto($testo, $caratteri) { if (strlen($testo) <= $caratteri) return $testo; $nuovo = wordwrap($testo, $caratteri, "|"); $nuovotesto=explode("|",$nuovo); return $nuovotesto[0]."..........."; }

function endElement($parser, $name) {

global $insideitem, $tag, $title, $description, $link, $tekens;
if ($name == 'ITEM') {
printf('<li><strong><a href=\'%s\' target="_blank">%s</a></strong><br>',trim($link),trim($title));


$description = troncaTesto($description, $tekens);
?>

[size=xsmall]Toevoeging op 27/02/2011 17:57:53:[/size]

OK opgelost; hier de oplossing als script.

<?php
$GLOBALS['tekens'] = $params->get( 'tekens' ); //aantal tekens binnenhalen en global maken

function troncaTesto($testo, $caratteri) { if (strlen($testo) <= $caratteri) return $testo; $nuovo = wordwrap($testo, $caratteri, "|"); $nuovotesto=explode("|",$nuovo); return $nuovotesto[0]."..........."; }

function endElement($parser, $name) {

global $insideitem, $tag, $title, $description, $link;
if ($name == 'ITEM') {
printf('<li><strong><a href=\'%s\' target="_blank">%s</a></strong><br>',trim($link),trim($title));

// de aangepaste aanroep voor de functie
$description = troncaTesto($description, $GLOBALS['tekens']);
>?

Reageren