コード例 #1
0
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 ;
}
コード例 #2
0
function install_etape_3b_dist()
{
    $login = _request('login');
    $email = _request('email');
    $nom = _request('nom');
    $pass = _request('pass');
    $pass_verif = _request('pass_verif');
    $server_db = defined('_INSTALL_SERVER_DB') ? _INSTALL_SERVER_DB : _request('server_db');
    if (!defined('_PASS_LONGUEUR_MINI')) {
        define('_PASS_LONGUEUR_MINI', 6);
    }
    if (!defined('_LOGIN_TROP_COURT')) {
        define('_LOGIN_TROP_COURT', 4);
    }
    if ($login) {
        $echec = $pass != $pass_verif ? _T('info_passes_identiques') : (strlen($pass) < _PASS_LONGUEUR_MINI ? _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI)) : (strlen($login) < _LOGIN_TROP_COURT ? _T('info_login_trop_court') : ''));
        include_spip('inc/filtres');
        if (!$echec and $email and !email_valide($email)) {
            $echec = _T('form_email_non_valide');
        }
        if ($echec) {
            echo minipres('AUTO', info_progression_etape(3, 'etape_', 'install/', true) . "<div class='error'><h3>{$echec}</h3>\n" . "<p>" . _T('avis_connexion_echec_2') . "</p>" . "</div>");
            exit;
        }
    }
    if (@file_exists(_FILE_CHMOD_TMP)) {
        include _FILE_CHMOD_TMP;
    } else {
        redirige_url_ecrire('install');
    }
    if (!@file_exists(_FILE_CONNECT_TMP)) {
        redirige_url_ecrire('install');
    }
    # maintenant on connait le vrai charset du site s'il est deja configure
    # sinon par defaut lire_meta reglera _DEFAULT_CHARSET
    # (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET)
    lire_metas();
    if ($login) {
        include_spip('inc/charsets');
        $nom = importer_charset($nom, _DEFAULT_CHARSET);
        $login = importer_charset($login, _DEFAULT_CHARSET);
        $email = importer_charset($email, _DEFAULT_CHARSET);
        # pour le passwd, bizarrement il faut le convertir comme s'il avait
        # ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js
        $pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1');
        include_spip('auth/sha256.inc');
        include_spip('inc/acces');
        $htpass = generer_htpass($pass);
        $alea_actuel = creer_uniqid();
        $alea_futur = creer_uniqid();
        $shapass = _nano_sha256($alea_actuel . $pass);
        // prelablement, creer le champ webmestre si il n'existe pas (install neuve
        // sur une vieille base
        $t = sql_showtable("spip_auteurs", true);
        if (!isset($t['field']['webmestre'])) {
            @sql_alter("TABLE spip_auteurs ADD webmestre varchar(3)  DEFAULT 'non' NOT NULL");
        }
        $id_auteur = sql_getfetsel("id_auteur", "spip_auteurs", "login="******"nom" => $nom, 'email' => $email, 'login' => $login, 'pass' => $shapass, 'alea_actuel' => $alea_actuel, 'alea_futur' => $alea_futur, 'htpass' => $htpass, 'statut' => '0minirezo'), "id_auteur={$id_auteur}");
        } else {
            $id_auteur = sql_insertq('spip_auteurs', array('nom' => $nom, 'email' => $email, 'login' => $login, 'pass' => $shapass, 'htpass' => $htpass, 'alea_actuel' => $alea_actuel, 'alea_futur' => $alea_futur, 'statut' => '0minirezo'));
        }
        // le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne
        @sql_updateq('spip_auteurs', array('webmestre' => 'oui'), "id_auteur={$id_auteur}");
        // inserer email comme email webmaster principal
        // (sauf s'il est vide: cas de la re-installation)
        if ($email) {
            ecrire_meta('email_webmaster', $email);
        }
        // Connecter directement celui qui vient de (re)donner son login
        // mais sans cookie d'admin ni connexion longue
        include_spip('inc/auth');
        if (!($auteur = auth_identifier_login($login, $pass)) or !auth_loger($auteur, true)) {
            spip_log("login automatique impossible {$auth_spip} {$session}" . count($row));
        }
    }
    // installer les metas
    $config = charger_fonction('config', 'inc');
    $config();
    // activer les plugins
    // leur installation ne peut pas se faire sur le meme hit, il faudra donc
    // poursuivre au hit suivant
    include_spip('inc/plugin');
    actualise_plugins_actifs();
    include_spip('inc/distant');
    redirige_par_entete(parametre_url(self(), 'etape', '4', '&'));
}
コード例 #3
0
ファイル: charsets.php プロジェクト: rhertzog/lcs
function charset2unicode($texte, $charset='AUTO' /* $forcer: obsolete*/) {
	static $trans;

	if ($charset == 'AUTO')
		$charset = $GLOBALS['meta']['charset'];

	if ($charset == '') $charset = 'iso-8859-1';
	$charset = strtolower($charset);

	switch ($charset) {
	case 'utf-8':
	case 'utf8':
		return utf_8_to_unicode($texte);

	case 'iso-8859-1':
		$texte = corriger_caracteres_windows($texte, 'iso-8859-1');
		// pas de break; ici, on suit sur default:

	default:
		// mbstring presente ?
		if (init_mb_string()) {
			if ($order = mb_detect_order() # mb_string connait-il $charset?
			AND mb_detect_order($charset)) {
				$s = mb_convert_encoding($texte, 'utf-8', $charset);
				if ($s && $s != $texte) return utf_8_to_unicode($s);
			}
			mb_detect_order($order); # remettre comme precedemment
		}

		// Sinon, peut-etre connaissons-nous ce charset ?
		if (!isset($trans[$charset])) {
			global $CHARSET;
			if ($cset = load_charset($charset)
			AND is_array($CHARSET[$cset]))
				foreach ($CHARSET[$cset] as $key => $val) {
					$trans[$charset][chr($key)] = '&#'.$val.';';
			}
		}
		if (count($trans[$charset]))
			return str_replace(array_keys($trans[$charset]),array_values($trans[$charset]),$texte);

		// Sinon demander a iconv (malgre le fait qu'il coupe quand un
		// caractere n'appartient pas au charset, mais c'est un probleme
		// surtout en utf-8, gere ci-dessus)
		if (test_iconv()) {
			$s = iconv($charset, 'utf-32le', $texte);
			if ($s) return utf_32_to_unicode($s);
		}

		// Au pire ne rien faire
		spip_log("erreur charset '$charset' non supporte");
		return $texte;
	}
}
コード例 #4
0
/**
 * Transforme une chaîne utf-8 en utf-8 sans "planes"
 * ce qui permet de la donner à MySQL "utf8", qui n'est pas un utf-8 complet
 * L'alternative serait d'utiliser utf8mb4
 *
 * @param string $x
 *     La chaîne à transformer
 * @return string
 *     La chaîne avec les caractères utf8 des hauts "planes" échappée
 *     en unicode : &#128169;
 */
function utf8_noplanes($x)
{
    $regexp_utf8_4bytes = '/(
      \\xF0[\\x90-\\xBF][\\x80-\\xBF]{2}     # planes 1-3
   | [\\xF1-\\xF3][\\x80-\\xBF]{3}          # planes 4-15
   |  \\xF4[\\x80-\\x8F][\\x80-\\xBF]{2}     # plane 16
)/xS';
    if (preg_match_all($regexp_utf8_4bytes, $x, $z, PREG_PATTERN_ORDER)) {
        foreach ($z[0] as $k) {
            $ku = utf_8_to_unicode($k);
            $x = str_replace($k, $ku, $x);
        }
    }
    return $x;
}
コード例 #5
0
ファイル: inc_charsets.php プロジェクト: nyimbi/legalcase
function charset2unicode($texte, $charset = 'AUTO', $forcer = false)
{
    static $trans;
    if ($charset == 'AUTO') {
        $charset = read_meta('charset');
    }
    $charset = strtolower($charset);
    switch ($charset) {
        case 'utf-8':
            // Le passage par utf-32 devrait etre plus rapide
            // (traitements PHP reduits au minimum)
            if (test_iconv()) {
                $s = iconv('utf-8', 'utf-32', $texte);
                if ($s) {
                    return utf_32_to_unicode($s);
                }
            }
            return utf_8_to_unicode($texte);
        case 'iso-8859-1':
            // On commente cet appel tant qu'il reste des spip v<1.5 dans la nature
            // pour que le filtre |entites_unicode donne des backends lisibles sur ces spips.
            if (!$forcer) {
                return $texte;
            }
        default:
            if (test_iconv()) {
                $s = iconv($charset, 'utf-32', $texte);
                if ($s) {
                    return utf_32_to_unicode($s);
                }
            }
            if (!$trans[$charset]) {
                global $CHARSET;
                load_charset($charset);
                reset($CHARSET[$charset]);
                while (list($key, $val) = each($CHARSET[$charset])) {
                    $trans[$charset][chr($key)] = '&#' . $val . ';';
                }
            }
            if ($trans[$charset]) {
                if ($GLOBALS['flag_strtr2']) {
                    $texte = strtr($texte, $trans[$charset]);
                } else {
                    reset($trans[$charset]);
                    while (list($from, $to) = each($trans[$charset])) {
                        $texte = str_replace($from, $to, $texte);
                    }
                }
            }
            return $texte;
    }
}
コード例 #6
0
ファイル: facteur.php プロジェクト: samszo/open-edition
	/**
	 * Conversion safe d'un texte utf en isotruc
	 * @param string $text
	 * @param string $mode
	 * @return string
	 */
	protected function safe_utf8_decode($text,$mode='texte_brut') {
		if (!is_utf8($text))
			return ($text);

		if (function_exists('iconv') && $mode == 'texte_brut') {
			$text = str_replace('’',"'",$text);
			$text = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text);
			return str_replace('&#8217;',"'",$text);
		}
		else {
			if ($mode == 'texte_brut') {
				$text = str_replace('’',"'",$text);
			}
			$text = unicode2charset(utf_8_to_unicode($text),'iso-8859-1');
			return str_replace('&#8217;',"'",$text);
		}
	}