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]]; |
} |