本文整理汇总了PHP中translitteration函数的典型用法代码示例。如果您正苦于以下问题:PHP translitteration函数的具体用法?PHP translitteration怎么用?PHP translitteration使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了translitteration函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: recherche_avancee_google_like
function recherche_avancee_google_like($string, $options = array())
{
$resume = isset($options['resume']) ? $options['resume'] : ($options['resume'] != 'non' ? $string : '');
$wrapper = isset($options['wrapper']) ? '<i class="rsusp">[...]</i>' : '';
$taille = isset($options['taille']) ? $options['taille'] : 55;
// Convertir en texte brut sans accent
$string = textebrut($string);
$string = translitteration($string);
$rech = translitteration(_request('recherche'));
// Supprimer les caracteres qui m...
$badguy = array("^", "/", "\\", "\$", "@", "*");
$rech = str_replace($badguy, "", $rech);
// en avant
$query = rtrim(str_replace("+", " ", $rech));
$qt = explode(" ", $query);
if ($wrapper) {
$num = count($qt);
// $cc = ceil(55 / $num);
$cc = $taille;
for ($i = 0; $i < $num; $i++) {
$tab[$i] = preg_split("/\\b({$qt[$i]})/i", $string, 2, PREG_SPLIT_DELIM_CAPTURE);
if (count($tab[$i]) > 1) {
// Chaine avant
$avant = substr($tab[$i][0], -$cc, $cc);
$mots = split(" ", $avant, 2);
if (count($mots) > 1) {
$avant = $mots[1];
}
// Chaine apres
$apres = substr($tab[$i][2], 0, $cc);
$apres = preg_replace('@(.+)\\s\\S+@s', '\\1', $apres);
// Concatener
if ($string_re == '') {
$string_re = $wrapper;
}
$string_re .= " {$avant}<span class='spip_surligne'>" . $tab[$i][1] . "</span>{$apres} {$wrapper}";
}
}
} else {
$pattern = array();
$replace = array();
foreach ($qt as $t) {
$pattern[] = "/{$t}/";
$replace[] = "<span class='spip_surligne'>" . $t . "</span>";
}
$string_re = preg_replace($pattern, $replace, $string);
}
// Si rien trouve : renvoyer les premiers mots en resume
if ($resume != '' and $string_re == '') {
$mots = split(" ", $string, 40);
for ($i = 0; $i < count($mots) - 1; $i++) {
$string_re .= $mots[$i] . " ";
if (strlen($string_re) > 2 * $cc) {
break;
}
}
$string_re = $resume;
}
return $string_re;
}
示例2: importer_csv_nettoie_key
/**
* enlever les accents des cles presentes dans le head,
* sinon ca pose des problemes ...
*
* @param string $key
* @return string
*/
function importer_csv_nettoie_key($key)
{
return translitteration($key);
/*$accents=array('�','�','�','�','�',"�","�","'");
$accents_rep=array('e','e','e','a','u',"o","c","_");
return str_replace($accents,$accents_rep,$key);*/
}
示例3: reduire_mot
function reduire_mot($mot) {
return strtr(
translitteration(trim($mot)),
'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz'
);
}
示例4: action_snippet_exporte
function action_snippet_exporte(){
global $auteur_session;
$arg = _request('arg');
$args = explode(":",$arg);
$hash = _request('hash');
$id_auteur = $auteur_session['id_auteur'];
$redirect = _request('redirect');
if ($redirect==NULL) $redirect="";
include_spip("inc/securiser_action");
if (verifier_action_auteur("snippet_exporte-$arg",$hash,$id_auteur)==TRUE) {
$table = $args[0];
$id = $args[1];
$f = snippets_fond_exporter($table, false);
if ($f) {
include_spip('public/assembler');
$out = recuperer_fond($f,array('id'=>intval($id)));
//$out = preg_replace(",\n\n[\s]*(?=\n),","",$out);
$filename=str_replace(":","_",$arg);
if (preg_match(",<titre>(.*)</titre>,Uims",$out,$regs))
$filename = preg_replace(',[^-_\w]+,', '_', trim(translitteration(textebrut(typo($regs[1])))));
$extension = "xml";
Header("Content-Type: text/xml; charset=".$GLOBALS['meta']['charset']);
Header("Content-Disposition: attachment; filename=$filename.$extension");
Header("Content-Length: ".strlen($out));
echo $out;
exit();
}
}
redirige_par_entete(str_replace("&","&",urldecode($redirect)));
}
示例5: 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>" : "";
}
示例6: url_nettoyer
function url_nettoyer($titre,$longueur_maxi,$longueur_min=0,$separateur='-',$filtre=''){
if (!defined('_TRANSLITTERER_URL')) define('_TRANSLITTERER_URL', true);
$titre = supprimer_tags(supprimer_numero(extraire_multi($titre)));
$url = corriger_caracteres($titre);
if (_TRANSLITTERER_URL) $url = translitteration($url);
if ($filtre)
$url = $filtre($url);
// on va convertir tous les caracteres de ponctuation et espaces
// a l'exception de l'underscore (_), car on veut le conserver dans l'url
$url = str_replace('_', chr(7), $url);
$url = @preg_replace(',[[:punct:][:space:]]+,u', ' ', $url);
$url = str_replace(chr(7), '_', $url);
// S'il reste trop de caracteres non latins, les gerer comme wikipedia
// avec rawurlencode :
if (_TRANSLITTERER_URL && preg_match_all(",[^a-zA-Z0-9 _]+,", $url, $r, PREG_SET_ORDER)) {
foreach ($r as $regs) {
$url = substr_replace($url, rawurlencode($regs[0]),
strpos($url, $regs[0]), strlen($regs[0]));
}
}
// S'il reste trop peu, renvoyer vide
if (strlen($url) < $longueur_min)
return '';
// Sinon couper les mots et les relier par des $separateur
if (_TRANSLITTERER_URL) $mots = preg_split(",[^a-zA-Z0-9_%]+,", $url);
else $mots = preg_split(",[\s]+,", $url);
$url = '';
foreach ($mots as $mot) {
if (!strlen($mot)) continue;
$url2 = $url.$separateur.$mot;
// Si on depasse $longueur_maxi caracteres, s'arreter
// ne pas compter 3 caracteres pour %E9 mais un seul
$long = preg_replace(',%.,', '', $url2);
if (strlen($long) > $longueur_maxi) {
break;
}
$url = $url2;
}
$url = substr($url, 1);
// On enregistre en utf-8 dans la base
$url = rawurldecode($url);
if (strlen($url) < $longueur_min)
return '';
return $url;
}
示例7: dump_nom_fichier
/**
* Nom du fichier de sauvegarde
* la fourniture de l'extension permet de verifier que le nom n'existe pas deja
*
* @param string $dir
* @param string $extension
* @return string
*/
function dump_nom_fichier($dir, $extension = 'sqlite')
{
include_spip('inc/texte');
$site = isset($GLOBALS['meta']['nom_site']) ? preg_replace(array(",\\W,is", ",_(?=_),", ",_\$,"), array("_", "", ""), couper(translitteration(trim($GLOBALS['meta']['nom_site'])), 30, "")) : 'spip';
$site .= '_' . date('Ymd');
$nom = $site;
$cpt = 0;
while (file_exists($dir . $nom . ".{$extension}")) {
$nom = $site . sprintf('_%03d', ++$cpt);
}
return $nom . ".{$extension}";
}
示例8: expression_recherche
function expression_recherche($recherche, $options)
{
$u = $GLOBALS['meta']['pcre_u'];
include_spip('inc/charsets');
$recherche = trim(translitteration($recherche));
$is_preg = false;
if (substr($recherche, 0, 1) == '/' and substr($recherche, -1, 1) == '/') {
// c'est une preg
$preg = $recherche . $options['preg_flags'];
$is_preg = true;
} else {
// s'il y a plusieurs mots il faut les chercher tous : oblige REGEXP
if (preg_match(",\\s+," . $u, $recherche)) {
$is_preg = true;
$recherche = preg_replace(',\\s+,' . $u, '|', $recherche);
}
$preg = '/' . str_replace('/', '\\/', $recherche) . '/' . $options['preg_flags'];
}
// Si la chaine est inactive, on va utiliser LIKE pour aller plus vite
// ou si l'expression reguliere est invalide
if (!$is_preg or @preg_match($preg, '') === FALSE) {
$methode = 'LIKE';
$u = $GLOBALS['meta']['pcre_u'];
// eviter les parentheses et autres caractères qui interferent avec pcre par la suite (dans le preg_match_all) s'il y a des reponses
$recherche = str_replace(array('(', ')', '?', '[', ']', '+', '*', '/'), array('\\(', '\\)', '[?]', '\\[', '\\]', '\\+', '\\*', '\\/'), $recherche);
$recherche_mod = $recherche;
// echapper les % et _
$q = str_replace(array('%', '_'), array('\\%', '\\_'), trim($recherche));
// les expressions entre " " sont un mot a chercher tel quel
// -> on remplace les espaces par un _ et on enleve les guillemets
if (preg_match(',["][^"]+["],Uims', $q, $matches)) {
foreach ($matches as $match) {
// corriger le like dans le $q
$word = preg_replace(",\\s+,Uims", "_", $match);
$word = trim($word, '"');
$q = str_replace($match, $word, $q);
// corriger la regexp
$word = preg_replace(",\\s+,Uims", "[\\s]", $match);
$word = trim($word, '"');
$recherche_mod = str_replace($match, $word, $recherche_mod);
}
}
$q = sql_quote("%" . preg_replace(",\\s+," . $u, "%", $q) . "%");
$preg = '/' . preg_replace(",\\s+," . $u, ".+", trim($recherche_mod)) . '/' . $options['preg_flags'];
} else {
$methode = 'REGEXP';
$q = sql_quote(trim($recherche, '/'));
}
return array($methode, $q, $preg);
}
示例9: 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>" : "";
}
示例10: inc_exporter_csv_dist
function inc_exporter_csv_dist($titre, $resource, $delim=',', $entetes = null,$envoyer = true){
$filename = preg_replace(',[^-_\w]+,', '_', translitteration(textebrut(typo($titre))));
if ($delim == 'TAB') $delim = "\t";
if (!in_array($delim,array(',',';',"\t")))
$delim = ",";
$charset = $GLOBALS['meta']['charset'];
$importer_charset = null;
if ($delim == ',')
$extension = 'csv';
else {
$extension = 'xls';
# Excel n'accepte pas l'utf-8 ni les entites html... on transcode tout ce qu'on peut
$importer_charset = $charset = 'iso-8859-1';
}
$filename = "$filename.$extension";
if ($entetes AND is_array($entetes) AND count($entetes))
$output = exporter_csv_ligne($entetes,$delim,$importer_charset);
// on passe par un fichier temporaire qui permet de ne pas saturer la memoire
// avec les gros exports
$fichier = sous_repertoire(_DIR_CACHE,"export") . $filename;
$fp = fopen($fichier, 'w');
$length = fwrite($fp, $output);
while ($row=is_array($resource)?array_shift($resource):sql_fetch($resource)){
$output = exporter_csv_ligne($row,$delim,$importer_charset);
$length += fwrite($fp, $output);
}
fclose($fp);
if ($envoyer) {
Header("Content-Type: text/comma-separated-values; charset=$charset");
Header("Content-Disposition: attachment; filename=$filename");
//non supporte
//Header("Content-Type: text/plain; charset=$charset");
Header("Content-Length: $length");
ob_clean();
flush();
readfile($fichier);
}
return $fichier;
}
示例11: copier_document
function copier_document($ext, $orig, $source) {
$orig = preg_replace(',\.\.+,', '.', $orig); // pas de .. dans le nom du doc
$dir = creer_repertoire_documents($ext);
$dest = preg_replace("/[^.=\w-]+/", "_",
translitteration(preg_replace("/\.([^.]+)$/", "",
preg_replace("/<[^>]*>/", '', basename($orig)))));
// ne pas accepter de noms de la forme -r90.jpg qui sont reserves
// pour les images transformees par rotation (action/documenter)
$dest = preg_replace(',-r(90|180|270)$,', '', $dest);
// Si le document "source" est deja au bon endroit, ne rien faire
if ($source == ($dir . $dest . '.' . $ext))
return $source;
// sinon tourner jusqu'a trouver un numero correct
$n = 0;
while (@file_exists($newFile = $dir . $dest .($n++ ? ('-'.$n) : '').'.'.$ext));
return deplacer_fichier_upload($source, $newFile);
}
示例12: action_exporter
function action_exporter()
{
//global $auteur_session;
$arg = _request('arg');
$args = explode(":", $arg);
$hash = _request('hash');
//$id_auteur = $auteur_session['id_auteur'];
$redirect = _request('redirect');
if ($redirect == NULL) {
$redirect = "";
}
//include_spip("inc/securiser_action");
//if (verifier_action_auteur("snippet_exporte-$arg",$hash,$id_auteur)==TRUE) {
$table = array_shift($args);
$id = $args;
$f = snippets_fond_exporter($table, false);
spip_log('f ' . $f, 'export');
if ($f) {
include_spip('public/assembler');
$out = recuperer_fond($f, array('id' => $id));
//$out = preg_replace(",\n\n[\s]*(?=\n),","",$out);
// $filename=str_replace(":","_",$arg);
$today = date(Ymd);
$filename = $table . '_export_' . $today;
if (preg_match(",<titre>(.*)</titre>,Uims", $out, $regs)) {
$filename = preg_replace(',[^-_\\w]+,', '_', trim(translitteration(textebrut(typo($regs[1])))));
}
$extension = "csv";
Header("Content-Type: text/csv; charset=" . $GLOBALS['meta']['charset']);
Header("Content-Disposition: attachment; filename={$filename}.{$extension}");
Header("Content-Length: " . strlen($out));
echo $out;
exit;
// }
}
redirige_par_entete(str_replace("&", "&", urldecode($redirect)));
}
示例13: importer_csv_nettoie_key
/**
* enlever les accents des cles presentes dans le head,
* sinon ca pose des problemes ...
*
* @param string $key
* @return string
*/
function importer_csv_nettoie_key($key)
{
return translitteration($key);
}
示例14: joindre_liste_contenu_tailles_archive
/**
* Lister les fichiers contenus dans un zip
*
* @param array $files
* La liste des fichiers
* @return string $res
* La liste HTML des fichiers <li>...</li>
*/
function joindre_liste_contenu_tailles_archive($files)
{
include_spip('inc/charsets');
# pour le nom de fichier
$res = '';
if (is_array($files)) {
foreach ($files as $nom => $file) {
$nom = translitteration($nom);
$date = date_interface(date("Y-m-d H:i:s", $file['mtime']));
$taille = taille_en_octets($file['size']);
$res .= "<li title=\"" . attribut_html($title) . "\"><b>{$nom}</b> – {$taille}<br /> {$date}</li>\n";
}
}
return $res;
}
示例15: fixer_fichier_upload
/**
* Tester le type de document
*
* - le document existe et n'est pas de taille 0 ?
* - interdit a l'upload ?
* - quelle extension dans spip_types_documents ?
* - est-ce "inclus" comme une image ?
*
* Le zipper si necessaire
*
* @param array $file
* Au format $_FILES
* @param string $mode
* Mode d'inclusion du fichier, si connu
* @return array
*/
function fixer_fichier_upload($file, $mode = '')
{
/**
* On vérifie que le fichier existe et qu'il contient quelque chose
*/
if (is_array($row = verifier_upload_autorise($file['name'], $mode))) {
if (!isset($row['autozip'])) {
$row['fichier'] = copier_document($row['extension'], $file['name'], $file['tmp_name']);
/**
* On vérifie que le fichier a une taille
* si non, on le supprime et on affiche une erreur
*/
if ($row['fichier'] && !($taille = @intval(filesize(get_spip_doc($row['fichier']))))) {
spip_log("Echec copie du fichier " . $file['tmp_name'] . " (taille de fichier indéfinie)");
spip_unlink(get_spip_doc($row['fichier']));
return _T('medias:erreur_copie_fichier', array('nom' => $file['tmp_name']));
} else {
return $row;
}
} else {
unset($row['autozip']);
$ext = 'zip';
if (!($tmp_dir = tempnam(_DIR_TMP, 'tmp_upload'))) {
return false;
}
spip_unlink($tmp_dir);
@mkdir($tmp_dir);
include_spip('inc/charsets');
$tmp = $tmp_dir . '/' . translitteration($file['name']);
$file['name'] .= '.' . $ext;
# conserver l'extension dans le nom de fichier, par exemple toto.js => toto.js.zip
// deplacer le fichier tmp_name dans le dossier tmp
deplacer_fichier_upload($file['tmp_name'], $tmp, true);
include_spip('inc/pclzip');
$source = _DIR_TMP . basename($tmp_dir) . '.' . $ext;
$archive = new PclZip($source);
$v_list = $archive->create($tmp, PCLZIP_OPT_REMOVE_PATH, $tmp_dir, PCLZIP_OPT_ADD_PATH, '');
effacer_repertoire_temporaire($tmp_dir);
if (!$v_list) {
spip_log("Echec creation du zip ");
return false;
}
$row['fichier'] = copier_document($row['extension'], $file['name'], $source);
spip_unlink($source);
/**
* On vérifie que le fichier a une taille
* si non, on le supprime et on affiche une erreur
*/
if ($row['fichier'] && !($taille = @intval(filesize(get_spip_doc($row['fichier']))))) {
spip_log("Echec copie du fichier " . $file['tmp_name'] . " (taille de fichier indéfinie)");
spip_unlink(get_spip_doc($row['fichier']));
return _T('medias:erreur_copie_fichier', array('nom' => $file['tmp_name']));
} else {
return $row;
}
}
} else {
return $row;
}
// retourner le message d'erreur
}