/** * Limite le nombre de caractères de la chaîne. * * @param integer $iMaxLength Nombre maximal de caractères. * @param array $aOptions Tableau associatif qui par défaut vaut :<br/> * Array( * LimitChars::EXACTLY => false, * LimitChars::MARKER => '...', * LimitChars::INCLUDE_MARKER => true * )<br/> * où LimitChars::EXACTLY définit si le texte doit exactement respecter la longueur définie $iMaxLength, même dans le cas où la césure survient après des caractères vides; * LimitChars::MARKER définit le marker à ajouter après la césure, le cas échéant ; * LimitChars::INCLUDE_MARKER définit si les caractères de LimitChars::MARKER doivent être pris en compte par $iMaxLength * @throws \Exception */ public function __construct($iMaxLength, $aOptions = array()) { if (!is_int($iMaxLength)) { throw ExceptionType::invalidArgument("Argument #1 doit être un entier.", Exception::FROM_HANDLER); } if (!is_array($aOptions)) { throw ExceptionType::invalidArgument("Argument #2 doit être un tableau.", Exception::FROM_HANDLER); } $this->_iMaxLength = $iMaxLength; $this->_bExactly = isset($aOptions[self::EXACTLY]) ? (bool) $aOptions[self::EXACTLY] : false; $this->_sTrimMarker = isset($aOptions[self::MARKER]) ? (string) $aOptions[self::MARKER] : Config::get('ellipsis'); $this->_bIncludeTrimMarker = isset($aOptions[self::INCLUDE_MARKER]) ? (bool) $aOptions[self::INCLUDE_MARKER] : true; }
public function __construct($iMaxWords, $aOptions = array()) { if (!is_int($iMaxWords)) { throw ExceptionType::invalidArgument("Argument #1 doit être un entier supérieur à 0.", Exception::FROM_HANDLER); } if (!is_array($aOptions)) { throw ExceptionType::invalidArgument("Argument #2 doit être un tableau.", Exception::FROM_HANDLER); } $this->_iMaxWords = abs($iMaxWords); $this->_sTrimMarker = Config::get('ellipsis'); foreach ($aOptions as $sParam => $mValue) { switch ($sParam) { case self::LIMIT_CHARS: if (!is_int($mValue) && !is_null($mValue)) { throw ExceptionType::invalidArgument("Argument #2, l'élément {$sParam} doit être un entier ou null.", Exception::FROM_HANDLER); } $this->_iMaxChars = abs($mValue); break; case self::WORD_ADDITIONAL_CHARS: if (!is_string($mValue)) { throw ExceptionType::invalidArgument("Argument #2, l'élément {$sParam} doit être une chaîne de caractères.", Exception::FROM_HANDLER); } $this->_sAdditionalChars = $mValue; break; case self::INCLUDE_MARKER: $this->_bIncludeTrimMarker = (bool) $mValue; break; case self::EXACT_LIMIT_CHARS: $this->_bExactLimitChars = (bool) $mValue; break; case self::MARKER: $this->_sTrimMarker = (string) $mValue; break; } } }
public static function buildFromLang($sInputLang, $sSeparator = null) { $sLang = strtolower($sInputLang); if (!self::isValidLang($sLang)) { throw ExceptionType::domain("Argument #1 n'est pas une langue valide.", Exception::FROM_LOCALE); } if ($sSeparator === null) { $sSeparator = Config::get('locale.default_separator'); } else { if (!is_string($sSeparator) || !in_array($sSeparator, array('-', '_'))) { throw ExceptionType::invalidArgument("Argument #2 doit être une chaîne de caractères ayant pour valeur '-' ou '_'.", Exception::FROM_LOCALE); } } return $sLang . $sSeparator . self::$_aLocaleData[$sLang][0]; }
/** * Fixe le type d'encodage à utiliser. Si l'encodage n'est pas préciser, il est détecté automatiquement. * * @param string $sInputEncoding Nom de l'encodage à utiliser. * @return \Aouka\Text\String * @throws \InvalidArgumentException * @throws \Exception */ public function setEncoding($sInputEncoding = null) { // Si l'encodage est renseigné if ($sInputEncoding !== null) { if (!is_string($sInputEncoding)) { throw ExceptionType::invalidArgument("Argument #2 doit être une chaîne de caractères ou être null.", Exception::FROM_STRING); } // On vérifie qu'il est valide $sEncoding = self::isValidEncoding($sInputEncoding); if (!$sEncoding) { throw ExceptionType::domain("Argument #2 : n'est pas un encodage valide. Les encodages supportés sont décrits sur http://www.php.net/manual/fr/function.mb-list-encodings.php.", Exception::FROM_STRING); } // Si l'encodage n'est pas renseigné, on tente de le détecter automatiquement si la chaîne passée en paramètre contient au moins un caractère } else { if ($this->_sString) { try { $sEncoding = self::detectEncoding($this->_sString); } catch (\Exception $oException) { throw ExceptionType::invalidArgument("Il faut préciser manuellement le type d'encodage pour la chaîne d'entrée.", Exception::FROM_STRING, $oException); } } // Si ce n'est pas le cas, on utilise l'encodage par défaut $sEncoding = Config::get('encoding'); } $this->_sEncoding = $sEncoding; return $this; }
/** * Initialise l'analyseur de position pour la chaîne de caractères. */ protected function _initializePositionAnalyzer() { // On définit l'expression régulière if (Config::get('regex.automatic_utf8_modifier_addition')) { $this->_oRegex->addModifiers($this->_m()); } // On instancie l'analyseur de position pour la chaîne de caractères $this->_oPositionAnalyzer = new PositionAnalyzer($this->_oString); // On fait une analyse de position pour l'expression régulière définie $this->_oPositionAnalyzer->getRegexPos($this->_oRegex); }