Subversion Repositories eFlore/Applications.eflore-consultation

Compare Revisions

Ignore whitespace Rev 201 → Rev 202

/trunk/bibliotheque/Surligneur.php
1,11 → 1,12
<?php
class Surligneur {
private $texte = '';
private $texteSansAccent = '';
private $tags = array();
private $nbreSurlignageMaxParMot = 1;
private $nbreSurlignageCourant = 0;
 
public function __construct($texte = null, $surlignageMaxParMot = null) {
public function __construct($texte = null, $surlignageMaxParMot = null, ChaineManipulateur $manipulateurDeChaine = null) {
if (is_null($texte) == false) {
$this->setTexte($texte);
}
12,6 → 13,8
if (is_null($surlignageMaxParMot) == false) {
$this->setNbreMaxSurlignageParMot($surlignageMaxParMot);
}
$this->manipulateurDeChaine = is_null($manipulateurDeChaine) ? new ChaineManipulateur() : $manipulateurDeChaine;
}
 
public function setTexte($txt) {
25,6 → 28,7
public function surlignerMots($mots) {
$this->verifierTableauDeMots($mots);
$this->texte = preg_replace_callback('`<[^>]+>`', array($this, 'sauverTags'), $this->texte);
$this->texteSansAccent = $this->manipulateurDeChaine->supprimerAccents($this->texte);
foreach ($mots as $mot) {
$this->initialiserNbreSurlignageCourant();
$this->texte = $this->surlignerMot($mot);
56,7 → 60,7
}
 
private function surlignerMot($mot) {
$positionDebutMot = stripos($this->texte, $mot);
$positionDebutMot = stripos($this->texteSansAccent, $mot);
$longueurMot = strlen($mot);
$surlignage = $this->texte;
if ($positionDebutMot !== false) {
77,7 → 81,7
$this->tags[$i] = '<span class="surlignage">'.$motTrouve.'</span>';
return '<'.$i.'>';
}
 
private function restaurerTags($match) {
return $this->tags[$match[1]];
}