本文整理汇总了PHP中unicode2charset函数的典型用法代码示例。如果您正苦于以下问题:PHP unicode2charset函数的具体用法?PHP unicode2charset怎么用?PHP unicode2charset使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了unicode2charset函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: pdf_first_clean
function pdf_first_clean($texte){
// Cette focntion est appelé après la fonction propre
// $texte = ereg_replace("<p class[^>]*>", "<P>", $texte);
//Translation des codes iso
// PB avec l'utilisation de <code>
$trans = get_html_translation_table(HTML_ENTITIES);
$texte = preg_replace(',<!-- .* -->,msU', '', $texte); // supprimer les remarques HTML (du Couteau Suisse ?)
$trans = array_flip($trans);
$trans["<br />\n"] = "<BR>"; // Pour éviter que le \n ne se tranforme en espace dans les <DIV class=spip_code> (TT, tag SPIP : code)
$trans['°'] = "°";
$trans["œ"] = "oe";
$trans["‎"] = "";
$trans["–"] = "-";
$trans["‘"] = "'";
$trans["’"] = "'";
$trans["“"] = "\"";
$trans["”"] = "\"";
$trans["…"] = "...";
$trans["€"] = "Euros";
$trans["û"] = "û";
$trans['->'] = '-»';
$trans['<-'] = '«-';
$trans[' '] = ' ';
// certains titles font paniquer l'analyse
$texte = preg_replace(',title=".*",msU', 'title=""', $texte);
$texte = unicode2charset(charset2unicode($texte), 'iso-8859-1'); // repasser tout dans un charset acceptable par export PDF
$texte = strtr($texte, $trans);
return $texte;
}
示例2: plugins_afficher_liste_dist
function plugins_afficher_liste_dist($url_page,$liste_plugins, $liste_plugins_actifs, $dir_plugins=_DIR_PLUGINS,$afficher_un = 'afficher_plugin'){
$get_infos = charger_fonction('get_infos','plugins');
$ligne_plug = charger_fonction($afficher_un,'plugins');
$liste_plugins = array_flip($liste_plugins);
foreach(array_keys($liste_plugins) as $chemin) {
if ($info = $get_infos($chemin, false, $dir_plugins))
$liste_plugins[$chemin] = strtoupper(trim(typo(translitteration(unicode2charset(html2unicode($info['nom']))))));
}
asort($liste_plugins);
$exposed = urldecode(_request('plugin'));
$block_par_lettre = false;//count($liste_plugins)>10;
$fast_liste_plugins_actifs = array_flip($liste_plugins_actifs);
$res = '';
$block = '';
$initiale = '';
$block_actif = false;
foreach($liste_plugins as $plug => $nom){
if (($i=substr($nom,0,1))!==$initiale){
$res .= $block_par_lettre ? affiche_block_initiale($initiale,$block,$block_actif): $block;
$initiale = $i;
$block = '';
$block_actif = false;
}
// le rep suivant
$actif = @isset($fast_liste_plugins_actifs[$plug]);
$block_actif = $block_actif | $actif;
$expose = ($exposed AND ($exposed==$plug OR $exposed==$dir_plugins . $plug OR $exposed==substr($dir_plugins,strlen(_DIR_RACINE)) . $plug));
$block .= $ligne_plug($url_page, $plug, $actif, $expose, "item", $dir_plugins)."\n";
}
$res .= $block_par_lettre ? affiche_block_initiale($initiale,$block,$block_actif): $block;
$class = basename($dir_plugins);
return $res ? "<ul class='liste-items plugins $class'>$res</ul>" : "";
}
示例3: exporter_csv_ligne
/**
* Exporter une ligne complete au format CSV, avec delimiteur fourni
* @param array $ligne
* @param string $delim
* @return string
*/
function exporter_csv_ligne($ligne, $delim = ',', $importer_charset = null) {
$output = join($delim, array_map('exporter_csv_champ', $ligne))."\r\n";
if ($importer_charset){
$output = unicode2charset(html2unicode(charset2unicode($output)), $importer_charset);
}
return $output;
}
示例4: typographie_fr_dist
function typographie_fr_dist($letexte)
{
static $trans;
// Nettoyer 160 = nbsp ; 187 = raquo ; 171 = laquo ; 176 = deg ;
// 147 = ldquo; 148 = rdquo; ' = zouli apostrophe
if (!$trans) {
$trans = array("'" => "’", " " => "~", "»" => "»", "«" => "«", "”" => "”", "“" => "“", "°" => "°");
$chars = array(160 => '~', 187 => '»', 171 => '«', 148 => '”', 147 => '“', 176 => '°');
$chars_trans = array_keys($chars);
$chars = array_values($chars);
$chars_trans = implode(' ', array_map('chr', $chars_trans));
$chars_trans = unicode2charset(charset2unicode($chars_trans, 'iso-8859-1', 'forcer'));
$chars_trans = explode(" ", $chars_trans);
foreach ($chars as $k => $r) {
$trans[$chars_trans[$k]] = $r;
}
}
$letexte = strtr($letexte, $trans);
$cherche1 = array('/((?:^|[^\\#0-9a-zA-Z\\&])[\\#0-9a-zA-Z]*)\\;/S', '/»| --?,|(?::| %)(?:\\W|$)/S', '/([^[<(!?.])([!?][!?\\.]*)/iS', '/«|(?:M(?:M?\\.|mes?|r\\.?)|[MnN]°) /S');
$remplace1 = array('\\1~;', '~\\0', '\\1~\\2', '\\0~');
$letexte = preg_replace($cherche1, $remplace1, $letexte);
$letexte = preg_replace("/ *~+ */S", "~", $letexte);
$cherche2 = array('/([^-\\n]|^)--([^-]|$)/S', ',(http|https|ftp|mailto)~((://[^"\'\\s\\[\\]\\}\\)<>]+)~([?]))?,S', '/~/');
$remplace2 = array('\\1—\\2', '\\1\\3\\4', ' ');
$letexte = preg_replace($cherche2, $remplace2, $letexte);
return $letexte;
}
示例5: typo_exposants_fr
function typo_exposants_fr($texte){
static $typo = NULL;
static $egrave; static $eaigu1; static $eaigu2; static $accents;
if (is_null($typo)) {
// en principe, pas besoin de : caractere_utf_8(232)
$egrave = unicode2charset('è').'|è|è';
$eaigu1 = unicode2charset('é').'|é|é';
$eaigu2 = unicode2charset('É').'|É|É';
$accents = unicode2charset('àáâäåæèéêëìíîïòóôöùúûü');
$typo = array( array(
'/(?<=\bM)e?(lles?)\b/', // Mlle(s), Mme(s) et erreurs Melle(s)
'/(?<=\bM)(gr|mes?)\b/', // Mme(s) et Mgr
'/(?<=\b[DP])(r)(?=[\s\.-])/', // Dr, Pr suivis d'un espace d'un point ou d'un tiret
'/\bm²\b/', '/(?<=\bm)([23])\b/', // m2, m3, m²
'/(?<=\b[Mm])([nd]s?)\b/', // millions, milliards
'/(?<=\bV)(ve)\b/', '/(?<=\bC)(ies?)\b/', // Vve et Cie(s)
"/(?<=\bS)(t(?:$eaigu1)s?)(?=\W)/", "/(?<=\W)(?:E|$eaigu2)ts\b/", // Societes(s), Etablissements
'/(?<=\b[1I])i?(ers?)\b/', // 1er(s), Erreurs 1ier(s), 1ier(s)
"/(?<=\b[1I])i?(?:e|$egrave)(res?)\b/", // Erreurs 1(i)ere(s) + accents
'/(?<=\b1)(r?es?)\b/', // 1e(s), 1re(s)
'/(?<=\b2)(nde?s?)\b/', // 2nd(e)(s)
"/(\b[0-9IVX]+)i?(?:e|$egrave)?me(s?)\b/", // Erreurs (i)(e)me(s) + accents
'/\b([0-9IVX]+)(es?)\b/', // 2e(s), IIIe(s)... (les 1(e?r?s?) ont deja ete remplaces)
"/(?<![;$accents])\b(\d+|r|v)o(?=(?: |[\s,;:!\/\?\.-]))/", // recto, verso, primo, secondo, etc.
'/(?<=\bM)(e)(?= [A-Z])/', // Maitre (suivi d'un espace et d'une majuscule)
), array(
_TYPO_sup, _TYPO_sup, // Mlle(s), Mme(s), Mgr
_TYPO_sup, // Dr, Pr,
'm<sup class="typo_exposants">2</sup>', _TYPO_sup, // m2, m3, m²
_TYPO_sup, _TYPO_sup, _TYPO_sup, // Vve, Mn(s), Md(s), Bd(s), Cie(s)
_TYPO_sup, 'É<sup class="typo_exposants">ts</sup>', // Sté(s), Ets
_TYPO_sup, _TYPO_sup, _TYPO_sup, // 1er et Cie
_TYPO_sup, // 2nd(e)(s)
'$1<sup class="typo_exposants">e$2</sup>', // Erreurs me, eme, ème, ième + pluriels
_TYPO_sup2, // 2e(s), IIIe(s)...
'$1<sup class="typo_exposants">o</sup>', // ro, vo, 1o, 2o, etc.
_TYPO_sup, // Me
));
if(defined('_CS_EXPO_BOFBOF')) {
$typo[0] = array_merge($typo[0], array(
'/(?<=\bS)(te?s?)(?=[\s\.-])/', // St(e)(s) suivis d'un espace d'un point ou d'un tiret
'/(?<=\bB)(x|se|ses)(?=[\s\.-])/', // Bx, Bse(s) suivis d'un espace d'un point ou d'un tiret
'/(?<=\b[Bb])(ds?)\b/', '/(?<=\b[Ff])(gs?)\b/', // boulevard(s) et faubourgs(s)
));
$typo[1] = array_merge($typo[1], array(
_TYPO_sup, _TYPO_sup, // St(e)(s), Bx, Bse(s)
_TYPO_sup, _TYPO_sup, // Bd(s) et Fg(s)
));
}
}
return preg_replace($typo[0], $typo[1], $texte);
}
示例6: glossaire_accents_callback
function glossaire_accents_callback($matches) {
$u = unicode2charset($matches[0]); // charset
$u2 = init_mb_string()?mb_strtoupper($u):strtoupper($u); // charset majuscule
$u3 = htmlentities($u2, ENT_QUOTES, $GLOBALS['meta']['charset']); // html majuscule
$u4 = html2unicode($u3); // unicode majuscule
$a = array_unique(array($u, $u2, htmlentities($u, ENT_QUOTES, $GLOBALS['meta']['charset']), $u3, $matches[0], $u4));
// $a = array_unique(array($u, htmlentities($u, ENT_QUOTES, $GLOBALS['meta']['charset']), $matches[0]));
return '(?:'.join('|', $a).')';
}
示例7: mediabox_insert_head_css
function mediabox_insert_head_css($flux)
{
$config = mediabox_config();
if ($config['active'] == 'oui' and $f = find_in_path((test_espace_prive() ? "prive/" : "") . "colorbox/" . $config['skin'] . '/colorbox.css')) {
$flux .= '<link rel="stylesheet" href="' . direction_css($f) . '" type="text/css" media="all" />';
/**
* Initialiser la config de la mediabox
*/
$flux = '<script type="text/javascript">/* <![CDATA[ */
var box_settings = {tt_img:' . ($config['traiter_toutes_images'] == 'oui' ? 'true' : 'false') . ',sel_g:"' . $config['selecteur_galerie'] . '",sel_c:"' . $config['selecteur_commun'] . '",trans:"' . $config['transition'] . '",speed:"' . $config['speed'] . '",ssSpeed:"' . $config['slideshow_speed'] . '",maxW:"' . $config['maxWidth'] . '",maxH:"' . $config['maxHeight'] . '",minW:"' . $config['minWidth'] . '",minH:"' . $config['minHeight'] . '",opa:"' . $config['opacite'] . '",str_ssStart:"' . unicode2charset(html2unicode(_T('mediabox:boxstr_slideshowStart'))) . '",str_ssStop:"' . unicode2charset(html2unicode(_T('mediabox:boxstr_slideshowStop'))) . '",str_cur:"' . _T('mediabox:boxstr_current', array('current' => '{current}', 'total' => '{total}')) . '",str_prev:"' . _T('mediabox:boxstr_previous') . '",str_next:"' . _T('mediabox:boxstr_next') . '",str_close:"' . _T('mediabox:boxstr_close') . '",splash_url:"' . $config['splash_url'] . '"};
/* ]]> */</script>' . "\n" . $flux;
}
return $flux;
}
示例8: plugins_afficher_liste_dist
/**
* Afficher une liste de plugins dans l'interface
* http://doc.spip.org/@affiche_liste_plugins
*
* @param string $url_page
* @param array $liste_plugins
* @param array $liste_plugins_checked
* @param array $liste_plugins_actifs
* @param string $dir_plugins
* @param string $afficher_un
* @return string
*/
function plugins_afficher_liste_dist($url_page, $liste_plugins, $liste_plugins_checked, $liste_plugins_actifs, $dir_plugins = _DIR_PLUGINS, $afficher_un = 'afficher_plugin')
{
$get_infos = charger_fonction('get_infos', 'plugins');
$ligne_plug = charger_fonction($afficher_un, 'plugins');
$all_infos = $get_infos($liste_plugins, false, $dir_plugins);
$all_infos = pipeline('filtrer_liste_plugins', array('args' => array('liste_plugins' => $liste_plugins, 'liste_plugins_checked' => $liste_plugins_checked, 'liste_plugins_actifs' => $liste_plugins_actifs, 'dir_plugins' => $dir_plugins), 'data' => $all_infos));
$liste_plugins = array_flip($liste_plugins);
foreach ($liste_plugins as $chemin => $v) {
// des plugins ont pu etre enleves de la liste par le pipeline. On en tient compte.
if (isset($all_infos[$chemin])) {
$liste_plugins[$chemin] = strtoupper(trim(typo(translitteration(unicode2charset(html2unicode($all_infos[$chemin]['nom']))))));
} else {
unset($liste_plugins[$chemin]);
}
}
asort($liste_plugins);
$exposed = urldecode(_request('plugin'));
$block_par_lettre = false;
//count($liste_plugins)>10;
$fast_liste_plugins_actifs = array();
$fast_liste_plugins_checked = array();
if (is_array($liste_plugins_actifs)) {
$fast_liste_plugins_actifs = array_flip($liste_plugins_actifs);
}
if (is_array($liste_plugins_checked)) {
$fast_liste_plugins_checked = array_flip($liste_plugins_checked);
}
$res = '';
$block = '';
$initiale = '';
$block_actif = false;
foreach ($liste_plugins as $plug => $nom) {
if (($i = substr($nom, 0, 1)) !== $initiale) {
$res .= $block_par_lettre ? affiche_block_initiale($initiale, $block, $block_actif) : $block;
$initiale = $i;
$block = '';
$block_actif = false;
}
// le rep suivant
$actif = isset($fast_liste_plugins_actifs[$plug]);
$checked = isset($fast_liste_plugins_checked[$plug]);
$block_actif = $block_actif | $actif;
$expose = ($exposed and ($exposed == $plug or $exposed == $dir_plugins . $plug or $exposed == substr($dir_plugins, strlen(_DIR_RACINE)) . $plug));
$block .= $ligne_plug($url_page, $plug, $checked, $actif, $expose, "item", $dir_plugins) . "\n";
}
$res .= $block_par_lettre ? affiche_block_initiale($initiale, $block, $block_actif) : $block;
$class = basename($dir_plugins);
return $res ? "<ul class='liste-items plugins {$class}'>{$res}</ul>" : "";
}
示例9: onelettrebis
function onelettrebis($chaine) {
$chaine=sansle($chaine);
$chaine=filtrer_entites($chaine); // si il y a des fois des accents en dur qui trainent
$chaine = unicode2charset(utf_8_to_unicode($chaine), 'iso-8859-1'); // on code en html ISO
$a = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
$b = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn";
$chaine=strtr($chaine, $a, $b); // on retire les accents
$chaine=strtoupper($chaine); // on passe en majuscules
/// si débute par le fameux Œ ou œ
$pattern = "^(Œ|œ)";
if (eregi($pattern,$chaine,$regs))
$chaine='O';//$chaine= $regs[0]; //on va renvoyer la lettre O
else
$chaine = $chaine{0};
return $chaine ;
}
示例10: mediabox_insert_head_css
function mediabox_insert_head_css($flux) {
$config = mediabox_config();
if ($config['active'] == 'oui' and $f = find_in_path((test_espace_prive() ? "prive/" : "") . "colorbox/" . $config['skin'] . '/colorbox.css')) {
$flux .= '<link rel="stylesheet" href="' . direction_css($f) . '" type="text/css" media="all" />';
/**
* Initialiser la config de la mediabox
*/
$configmediabox = '<script type="text/javascript">/* <![CDATA[ */
var box_settings = {tt_img:' . ($config['traiter_toutes_images'] == 'oui' ? 'true' : 'false')
. ',sel_g:"' . $config['selecteur_galerie']
. '",sel_c:"' . $config['selecteur_commun']
. '",trans:"' . $config['transition']
. '",speed:"' . $config['speed']
. '",ssSpeed:"' . $config['slideshow_speed']
. '",maxW:"' . $config['maxWidth']
. '",maxH:"' . $config['maxHeight']
. '",minW:"' . $config['minWidth']
. '",minH:"' . $config['minHeight']
. '",opa:"' . $config['opacite']
. '",str_ssStart:"' . unicode2charset(html2unicode(_T('mediabox:boxstr_slideshowStart')))
. '",str_ssStop:"' . unicode2charset(html2unicode(_T('mediabox:boxstr_slideshowStop')))
. '",str_cur:"' . _T('mediabox:boxstr_current', array('current' => '{current}', 'total' => '{total}'))
. '",str_prev:"' . _T('mediabox:boxstr_previous')
. '",str_next:"' . _T('mediabox:boxstr_next')
. '",str_close:"' . _T('mediabox:boxstr_close')
. '",splash_url:"' . $config['splash_url']
. '"};' . "\n";
// Si c'est une image, on la chargera avec une redimentionnement automatique
// Sinon, chargement dans une iframe
$extension = pathinfo($config['splash_url'], PATHINFO_EXTENSION);
if (match($extension, 'gif|png|jpg|jpeg')) {
$configmediabox .= 'var box_settings_iframe = false;' . "\n";
} else {
$configmediabox .= 'var box_settings_splash_width = "' . $config['splash_width'] . '";
var box_settings_splash_height = "' . $config['splash_height'] . '";' . "\n";
$configmediabox .= 'var box_settings_iframe = true;' . "\n";
}
$flux = $configmediabox . '/* ]]> */</script>' . "\n" . $flux;
}
return $flux;
}
示例11: agenda_affdate_debut_fin
/**
* Afficher de facon textuelle les dates de debut et fin en fonction des cas
* - Le lundi 20 fevrier a 18h
* - Le 20 fevrier de 18h a 20h
* - Du 20 au 23 fevrier
* - du 20 fevrier au 30 mars
* - du 20 fevrier 2007 au 30 mars 2008
* $horaire='oui' permet d'afficher l'horaire, toute autre valeur n'indique que le jour
* $forme peut contenir abbr (afficher le nom des jours en abbrege) et ou hcal (generer une date au format hcal)
*
* @param string $date_debut
* @param string $date_fin
* @param string $horaire
* @param string $forme
* @return string
*/
function agenda_affdate_debut_fin($date_debut, $date_fin, $horaire = 'oui', $forme = '')
{
$abbr = '';
if (strpos($forme, 'abbr') !== false) {
$abbr = 'abbr';
}
$affdate = "affdate_jourcourt";
if (strpos($forme, 'annee') !== false) {
$affdate = 'affdate';
}
$dtstart = $dtend = $dtabbr = "";
if (strpos($forme, 'hcal') !== false) {
$dtstart = "<abbr class='dtstart' title='" . date_iso($date_debut) . "'>";
$dtend = "<abbr class='dtend' title='" . date_iso($date_fin) . "'>";
$dtabbr = "</abbr>";
}
$date_debut = strtotime($date_debut);
$date_fin = strtotime($date_fin);
$d = date("Y-m-d", $date_debut);
$f = date("Y-m-d", $date_fin);
$h = $horaire == 'oui';
$hd = date("H:i", $date_debut);
$hf = date("H:i", $date_fin);
$au = " " . strtolower(_T('agenda:evenement_date_au'));
$du = _T('agenda:evenement_date_du') . " ";
$s = "";
if ($d == $f) {
// meme jour
$s = ucfirst(nom_jour($d, $abbr)) . " " . $affdate($d);
if ($h) {
$s .= " {$hd}";
}
$s = "{$dtstart}{$s}{$dtabbr}";
if ($h and $hd != $hf) {
$s .= "-{$dtend}{$hf}{$dtabbr}";
}
} else {
if (date("Y-m", $date_debut) == date("Y-m", $date_fin)) {
// meme annee et mois, jours differents
if ($h) {
$s = $du . $dtstart . affdate_jourcourt($d) . " {$hd}" . $dtabbr;
$s .= $au . $dtend . $affdate($f);
if ($hd != $hf) {
$s .= " {$hf}";
}
$s .= $dtabbr;
} else {
$s = $du . $dtstart . jour($d) . $dtabbr;
$s .= $au . $dtend . $affdate($f) . $dtabbr;
}
} else {
if (date("Y", $date_debut) == date("Y", $date_fin)) {
// meme annee, mois et jours differents
$s = $du . $dtstart . affdate_jourcourt($d);
if ($h) {
$s .= " {$hd}";
}
$s .= $dtabbr . $au . $dtend . $affdate($f);
if ($h) {
$s .= " {$hf}";
}
$s .= $dtabbr;
} else {
// tout different
$s = $du . $dtstart . affdate($d);
if ($h) {
$s .= " " . date("(H:i)", $date_debut);
}
$s .= $dtabbr . $au . $dtend . affdate($f);
if ($h) {
$s .= " " . date("(H:i)", $date_fin);
}
$s .= $dtabbr;
}
}
}
return unicode2charset(charset2unicode($s, 'AUTO'));
}
示例12: traiter_raccourci_glossaire
function traiter_raccourci_glossaire($texte)
{
if (!preg_match_all(_RACCOURCI_GLOSSAIRE,
$texte, $matches, PREG_SET_ORDER))
return $texte;
include_spip('inc/charsets');
$lien = charger_fonction('lien', 'inc');
foreach ($matches as $regs) {
// Eviter les cas particulier genre "[?!?]"
// et isoler le lexeme a gloser de ses accessoires
// (#:url du glossaire, | bulle d'aide, {} hreflang)
// Transformation en pseudo-raccourci pour passer dans inc_lien
if (preg_match(_RACCOURCI_GLOSES, $regs[1], $r)) {
preg_match('/^(.*?)(\d*)$/', $r[4], $m);
$_n = intval($m[2]);
$gloss = $m[1] ? ('#' . $m[1]) : '';
$t = $r[1] . $r[2] . $r[5];
list($t, $bulle, $hlang) = traiter_raccourci_lien_atts($t);
if ($bulle===false) $bulle = $m[1];
$t = unicode2charset(charset2unicode($t), 'utf-8');
$ref = $lien("glose$_n$gloss", $t, 'spip_glossaire', $bulle, $hlang);
$texte = str_replace($regs[0], $ref, $texte);
}
}
return $texte;
}
示例13: creer_json
/**
* Cree la sortie json pour le javascript des parametres de la barre
* et la retourne
*
* @return string : declaration json de la barre
*/
function creer_json(){
$barre = $this;
$type = $barre->nameSpace;
$fonctions = $barre->functions;
$barre->enlever_elements_non_affiches($this->markupSet);
$barre->enlever_parametres_inutiles();
$json = Barre_outils::json_export($barre);
// on lance la transformation des &chose; en veritables caracteres
// sinon markitup restitue « au lieu de « directement
// lorsqu'on clique sur l'icone
include_spip('inc/charsets');
$json = unicode2charset(html2unicode($json));
return "\n\nbarre_outils_$type = ".$json . "\n\n $fonctions";
}
示例14: couper
function couper($texte, $taille = 50, $suite = ' (...)')
{
if (!($length = strlen($texte)) or $taille <= 0) {
return '';
}
$offset = 400 + 2 * $taille;
while ($offset < $length and strlen(preg_replace(",<[^>]+>,Uims", "", substr($texte, 0, $offset))) < $taille) {
$offset = 2 * $offset;
}
if ($offset < $length && ($p_tag_ouvrant = strpos($texte, '<', $offset)) !== NULL) {
$p_tag_fermant = strpos($texte, '>', $offset);
if ($p_tag_fermant && $p_tag_fermant < $p_tag_ouvrant) {
$offset = $p_tag_fermant + 1;
}
// prolonger la coupe jusqu'au tag fermant suivant eventuel
}
$texte = substr($texte, 0, $offset);
/* 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 = preg_replace("/\n\n+/", "\r", $texte);
$texte = preg_replace("/<(p|br)( [^>]*)?" . ">/", "\r", $texte);
// supprimer les traits, lignes etc
$texte = preg_replace("/(^|\r|\n)(-[-#\\*]*|_ )/", "\r", $texte);
// supprimer les tags
$texte = supprimer_tags($texte);
$texte = trim(str_replace("\n", " ", $texte));
$texte .= "\n";
// marquer la fin
// travailler en accents charset
$texte = unicode2charset(html2unicode($texte, true));
if (!function_exists('nettoyer_raccourcis_typo')) {
include_spip('inc/lien');
}
$texte = nettoyer_raccourcis_typo($texte);
// corriger la longueur de coupe
// en fonction de la presence de caracteres utf
if ($GLOBALS['meta']['charset'] == 'utf-8') {
$long = charset2unicode($texte);
$long = spip_substr($long, 0, max($taille, 1));
$nbcharutf = preg_match_all('/(&#[0-9]{3,5};)/S', $long, $matches);
$taille += $nbcharutf;
}
// couper au mot precedent
$long = spip_substr($texte, 0, max($taille - 4, 1));
$u = $GLOBALS['meta']['pcre_u'];
$court = preg_replace("/([^\\s][\\s]+)[^\\s]*\n?\$/" . $u, "\\1", $long);
$points = $suite;
// trop court ? ne pas faire de (...)
if (spip_strlen($court) < max(0.75 * $taille, 2)) {
$points = '';
$long = spip_substr($texte, 0, $taille);
$texte = preg_replace("/([^\\s][\\s]+)[^\\s]*\n?\$/" . $u, "\\1", $long);
// encore trop court ? couper au caractere
if (spip_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 = preg_replace("/\r+/", "\n\n", $texte);
// supprimer l'eventuelle entite finale mal coupee
$texte = preg_replace('/&#?[a-z0-9]*$/S', '', $texte);
return quote_amp(trim($texte)) . $points;
}
示例15: typo_fr
function typo_fr($letexte)
{
global $flag_strtr2;
static $trans;
// Nettoyer 160 = nbsp ; 187 = raquo ; 171 = laquo ; 176 = deg ; 147 = ldquo; 148 = rdquo
if (!$trans) {
$trans = array(" " => "~", "»" => "»", "«" => "«", "”" => "”", "“" => "“", "°" => "°");
$chars = array(160 => '~', 187 => '»', 171 => '«', 148 => '”', 147 => '“', 176 => '°');
$charset = read_meta('charset');
include_lcm('inc_charsets');
while (list($c, $r) = each($chars)) {
$c = unicode2charset(charset2unicode(chr($c), 'iso-8859-1', 'forcer'));
$trans[$c] = $r;
}
}
if ($flag_strtr2) {
$letexte = strtr($letexte, $trans);
} else {
reset($trans);
while (list($c, $r) = each($trans)) {
$letexte = str_replace($c, $r, $letexte);
}
}
$cherche1 = array('/((^|[^\\#0-9a-zA-Z\\&])[\\#0-9a-zA-Z]*)\\;/', '/»| --?,|:([^0-9]|$)/', '/([^<!?])([!?])/', '/«|(M(M?\\.|mes?|r\\.?)|[MnN]°) /');
$remplace1 = array('\\1~;', '~\\0', '\\1~\\2', '\\0~');
$letexte = ereg_remplace($cherche1, $remplace1, $letexte);
$letexte = preg_replace("/ *~+ */", "~", $letexte);
$cherche2 = array('/([^-\\n]|^)--([^-]|$)/', '/(http|https|ftp|mailto)~:/', '/~/');
$remplace2 = array('\\1—\\2', '\\1:', ' ');
$letexte = ereg_remplace($cherche2, $remplace2, $letexte);
return $letexte;
}