Fonctions PHP utiles #3 (multilangue)

function lng ($t, $v=array(), $u=array(), $c=0) {
	global $langue;
	while ($c < count($v)) {
		$u[$c] = '$'.$c++;
		}
	return str_replace($u, $v, $langue[$t]);
	}


function avecS ($w) {
	return $w > 1 ? 's' : false;
	}


$langue = array(	// français
	'exemple_1' => '$0 a mangé $1 plat$2, sans en laisser une miette.',
	'exemple_2' => 'Exemple sans variable.'
	);

/*$langue = array(	// english
	'exemple_1' => '$0 has eaten $1 dishe$2, without leaving a crumb.',
	'exemple_2' => 'example without variable'
	);*/


echo lng('exemple_1', array('Mathias', 2, avecS(2)));
// retourne : Mathias a mangé 2 plats, sans en laisser une miette.

echo lng('exemple_2');
// retourne : Exemple sans variable.

Fonctions PHP utiles #2 (détecter la langue d'un texte)

$lang_detect = array(		// mots les plus usés par langues
	'zh' => array('我','你','的','是','了','他','么','们','在','有','这','那','不','什','个','来','要','就','一','人','。'),
	'en' => array('the','of','and','to','a','in','is','you','are','for','that','or','it','as','be','on','your','with','can','have'),
	'es' => array('de','que','no','a','la','el','y','es','en','lo','un','qué','por','me','una','te','se','los','con','para'),
	'hi' => array('की','और','एक','तक','में','है','आप','कि','यह','वह','था','लिए','पर','केवल','सदा','साथ','उसके','वे','मैं','बाद'),
	'fr' => array('je','de','est','pas','le','vous','la','tu','que','un','il','et','à','a','ne','les','ce','en','on','ça'),
	'pt' => array('que','o','não','de','a','é','você','e','eu','um','se','para','está','uma','me','com','por','ele','em','isso'),
	'ar' => array('لا','من','هذا','أن','في','أنا ','على','ما','هل','يا','و','لقد','ذلك','ماذا','أنت','هنا','لم','إلى','نعم','كان'),
	'id' => array('aku','tidak','yang','kau','ini','itu','di','dan','akan','apa','dia','anda','kita','untuk','saya','mereka','ada','bisa','tahu','dengan'),
	'ru' => array('я','не','что','в','и','ты','это','на','с','он','вы','да','как','мы','мне','а','меня','у','нет','так'),
	'nl' => array('ik','je','het','de','is','dat','een','niet','en','wat','van','we','in','ze','op','te','hij','zijn','er','maar'),
	'ja' => array('の','に','は','て','を','が','だ','た','する','と','ます','で','ない','いる','も','ある','・','です','「','」'),
	'it' => array('non','e','che','di','la','è','il','un','a','per','in','una','sono','mi','ho','si','lo','ha','ma','ti'),
	);

function clean_text($t) {
	$pattern = array("\n","+",",",".","’","'","\"","&","!","?",":",";","#","~","=","/","$","£","€","^","(",")","[","]","{","}","_","<",">"	,"。");
	return str_replace($pattern, ' ', mb_convert_case($t, MB_CASE_LOWER, "UTF-8"));
	}

function language_detect($t, $a) {	// text, arrays
	$t = clean_text($t);
	$res = array();
	if (strstr($t, ' '))
		$words = explode(' ', $t);
	else {
		$words = str_split($t);	// ne sert pas pour le chinois, voir plus bas
		//$words = array();
		//if (preg_match("/\p{Han}+/u", $t))
		//	$res['zh'] = 100;
		}
	foreach ($words as $w) {	// pour chaque mot
		foreach ($a as $k => $l) {	// à chaque langue
			if (in_array($w, $l))	// si le mot est contenu
				$res[$k]++;
			}
		}
	arsort($res);
	$kres = array_keys($res);
	$l = array_shift($kres);
	if (count($res) == 0 and preg_match("/\p{Han}+/u", $t))	// chinois
		return 'zh';
	elseif (count($res) > 0)
		return $l;		// langue trouvée
	else
		return 'en';	// langue par défaut
	}


// EXEMPLE
$texte = 'Si tu vas à Rio, N\'oublie pas de monter là-haut ; Dans un petit village, Caché sous les fleurs sauvages';

echo language_detect($texte, $lang_detect);		// retourne fr

[mémo] installation serveur web

Configuration rapide d'un RPS sur Jessie (Debian 8.7) neuf, d'un Atom à 1.8 GHz avec 2 Go et 1 To, sur D425KT. changer le mot de passe root

passwd mot_de_passe_root

créer un utilisateur

adduser mon_user

changer le port SSH et empécher le login root distant

nano /etc/ssh/sshd_config

et redémarrer

/etc/init.d/ssh restart

installer apache

apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

configurer

nano /etc/apache2/apache2.conf

changer user et groupe d'exécution

nano /etc/apache2/envvars

recharger

service apache2 force-restart

ajouter les sites

nano /etc/apache2/sites-available/nom_du_site.conf

activer les sites

a2ensite nom_du_site

activer les mods nécessaires

a2enmod rewrite...

installer PHP

apt-get install php7.0 libapache2-mod-php7.0 php7.0-cli php7.0-common php7.0-mbstring php7.0-gd php7.0-intl php7.0-xml php7.0-mysql php7.0-mcrypt php7.0-zip

configurer

nano /etc/php5/apache2/php.ini

pour ligne de commande

nano /etc/php5/cli/php.ini

recharger Apache

service apache2 force-reload

installer SQL

apt-get install mysql-server mysql-client mysql-common

configurer SQL

nano /etc/mysql/my.cnf

 

Fonctions PHP utiles #1

// met au pluriel : retour ou non : s ou aux/al - Ex. 2.' anim'.avecs(2,1) retourne 2 animaux
function avecs ($v, $al=false) {		// valeur, s -> aux
	if ($v > 1) {
		return $al ? 'aux' : 's';
		}
	else if ($al)
		return 'al';
	}

// Ajoute une ligne à un fichier log - Ex. addlog('[date] texte', 'log/visites.log')
function addlog ($l, $fi) {	// texte, fichier
$r = $l."\r\n";
	if ($f = fopen($fi, 'a')) {
		fprintf($f, $r);
		fclose($f);
		return true;
		}
	}

// Couleur d'un pourcentage (du rouge 0 au vert 100) - retourne rgba(x,x,0,x)
function rgb ($p, $op=1) {	// pourcentage, opacité
	$cr = 204 - round(153 / 100 * $p);
	$cg = round(204 / 100 * $p);
	return 'rgba('.$cr.','.$cg.',0,'.$op.')';
	}

Location de serveur, simple et rapide

Ce script permet de proposer en ligne, la location d'une application type serveur de jeu, chat ou autre contre paiement.

Il se veut simple et fonctionnel pour l'utilisateur : en cinq onglets maximum, il permet de choisir l'offre, générer un token, et choisir les options.

Le serveur commandé, il traite la création du dossier utilisateur avec sa configuration, fournit l'adresse de connexion, et permet quelques fonctions basiques utilisateur.
Le délai dépassé, le serveur est arrêté et le dossier utilisateur supprimé.

 

  • Simple et essentiel
  • Génération de tokens
  • Micro-paiement, adaptation vers d'autres API possible
  • Identification par mail et token
  • Traitements sans intervention humaine
  • Multi-instances

Télécharger (4 Mo)