Subversion Repositories Applications.papyrus

Compare Revisions

Ignore whitespace Rev 1932 → Rev 1933

/trunk/papyrus/applettes/moteur_recherche/bibliotheque/more_recherche_spip_article.class.php
108,7 → 108,7
}
$aso_resultat['hreflang'] = htmlentities($Article->lang);
$aso_resultat['description'] = $this->couper($Article->texte, MORE_RESULTAT_TAILLE_DESCRIPTION);
$aso_resultat['description'] = $this->couperTexte($Article->texte, MORE_RESULTAT_TAILLE_DESCRIPTION);
if (($jour = date('d', strtotime($Article->date)) ) != 0 ) {
$aso_resultat['date_creation'] .= '<span class="page_modification_jour"> '.$jour.'</span>'."\n";
153,100 → 153,14
return $tab_retour;
}
// Fichier : inc_texte.php3
function couper($texte, $taille = 50)
{
$texte = substr($texte, 0, 400 + 2*$taille); /* eviter de travailler sur 10ko pour extraire 150 caracteres */
// on utilise les \r pour passer entre les gouttes
$texte = str_replace("\r\n", "\n", $texte);
$texte = str_replace("\r", "\n", $texte);
// sauts de ligne et paragraphes
$texte = ereg_replace("\n\n+", "\r", $texte);
$texte = ereg_replace("<(p|br)( [^>]*)?".">", "\r", $texte);
// supprimer les traits, lignes etc
$texte = ereg_replace("(^|\r|\n)(-[-#\*]*|_ )", "\r", $texte);
// supprimer les tags
$texte = $this->supprimer_tags($texte);
$texte = trim(str_replace("\n"," ", $texte));
$texte .= "\n"; // marquer la fin
// travailler en accents charset
// On supprime dans Papyrus car cela tire trop de fonctions...
//$texte = $this->filtrer_entites($texte);
// supprimer les liens
$texte = ereg_replace("\[->([^]]*)\]","\\1", $texte); // liens sans texte
$texte = ereg_replace("\[([^\[]*)->([^]]*)\]","\\1", $texte);
// supprimer les notes
$texte = ereg_replace("\[\[([^]]|\][^]])*\]\]", "", $texte);
// supprimer les codes typos
$texte = ereg_replace("[}{]", "", $texte);
// supprimer les tableaux
$texte = ereg_replace("(^|\r)\|.*\|\r", "\r", $texte);
// couper au mot precedent
$long = $this->spip_substr($texte, 0, max($taille-4,1));
$court = ereg_replace("([^[:space:]][[:space:]]+)[^[:space:]]*\n?$", "\\1", $long);
$points = MORE_LG_RESULTAT_ETC;
// trop court ? ne pas faire de (...)
if (strlen($court) < max(0.75 * $taille,2)) {
$points = '';
$long = $this->spip_substr($texte, 0, $taille);
$texte = ereg_replace("([^[:space:]][[:space:]]+)[^[:space:]]*$", "\\1", $long);
// encore trop court ? couper au caractere
if (strlen($texte) < 0.75 * $taille)
$texte = $long;
} else
$texte = $court;
if (strpos($texte, "\n")) // la fin est encore la : c'est qu'on n'a pas de texte de suite
$points = '';
// remettre les paragraphes
$texte = ereg_replace("\r+", "\n\n", $texte);
// supprimer l'eventuelle entite finale mal coupee
$texte = preg_replace('/&#?[a-z0-9]*$/', '', $texte);
return trim($texte).$points;
}
// Gerer les outils mb_string
// Fichier : inc_texte.php3
function spip_substr($c, $start=0, $end='')
{
// methode substr normale
if ($end) {
return substr($c, $start, $end);
} else {
return substr($c, $start);
}
}
 
// Suppression basique et brutale de tous les <...>
// Fichier : inc_filtres.php3
function supprimer_tags($texte, $rempl = "")
{
$texte = preg_replace(",<[^>]*>,U", $rempl, $texte);
// ne pas oublier un < final non ferme
$texte = str_replace('<', ' ', $texte);
return $texte;
}
 
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log$
* Revision 1.7 2007-10-29 18:29:30 jp_milcent
* Ajout d'un préfixe devant les classes de l'applette pour éviter les conflits avec d'autres classes provenant des applis clientes.
*
* Revision 1.6 2007-01-02 18:49:22 jp_milcent
* Amélioration de la gestion du motif.
* Ajout de la gestion des expressions complête via l'utilisation de guillemets.