Accueil - PHP Tout afficher
PHP - Déterminer si une URL est ou non absolue
Avec cette simple fonction, vous pourrez tester si l'URL passée en paramètre est, ou non, absolue :
public function is_absolute($url)
{
$pattern = "/^(?:ftp|https?|feed):\/\/(?:(?:(?:[\w\.\-\+!$&'\(\)*\+,;=]|%[0-9a-f]{2})+:)*
(?:[\w\.\-\+%!$&'\(\)*\+,;=]|%[0-9a-f]{2})+@)?(?:
(?:[a-z0-9\-\.]|%[0-9a-f]{2})+|(?:\[(?:[0-9a-f]{0,4}:)*(?:[0-9a-f]{0,4})\]))(?::[0-9]+)?(?:[\/|\?]
(?:[\w#!:\.\?\+=&@$'~*,;\/\(\)\[\]\-]|%[0-9a-f]{2})*)?$/xi";
return (bool) preg_match($pattern, $url);
}
Remarque : Cette fonction est notamment utilisée par le CMS Drupal.
Lire ...WampServer + Php - Installer XDebug
Pour installer XDebug sous WampServer 3 et PHP 7.1.*, commencez par vous rendre sur le site Internet de XDebug. Puis cliquez sur "download". Choisissez la version qui correspond à votre installation et téléchargez la DLL. Si vous ne savez pas laquelle choisir, affichez un phpinfo() sur votre navigateur web préféré, sélectionnez tout et copiez le. Collez-le dans le champ texte présent à ce lien : https://xdebug.org/wizard.php. Cliquez enfin sur le bouton "Analyse my phpinfo() output". Ce petit programme vous indiquera quelle version vous devez choisir.
Une fois le fichier DLL téléchargé, coupez-le et collez-le dans le dossier "ext" là où se trouve votre PHP (C:\wamp64\bin\php\php7.1.9\ext, par exemple). Ouvrez maintenant votre fichier php.ini et ajoutez les lignes suivantes à la fin de ce dernier :
[xdebug]
zend_extension = c:\wamp64\bin\php\php7.1.9\ext\php_xdebug-2.6.0-7.1-vc14-x86_64.dll
xdebug.remote_enable = off
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = Off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir ="c:/wamp64/tmp"
xdebug.show_local_vars=0
Adaptez la configuration ci-dessus à votre installation.
Une fois ces étapes terminées, redémarrez Wamp et le tour est joué.
Remarque :
Si vous travaillez sous Symfony 4.* en dev, il vous faudra également redémarrer le serveur à l'aide de la commande suivante :
php bin/console server:run
Lire ...
PHP - Augmenter la taille d'upload des fichiers grâce au HTACCESS
Il existe plusieurs techniques pour augmenter la taille maximale de téléchargement en PHP. La plus classique est, bien entendu, de passer par le fichier php.ini. Il est également possible d'utiliser un fichier .htaccess.
Pour ce faire, créez-le (ou modifiez-le si vous en avez déjà un) et ajoutez-y les deux lignes suivantes :
php_value post_max_size 30M
php_value upload_max_filesize 30M
Lire ...
Filtrer sur la totalité des types d'espace en PHP
« \s » permet de filtrer le caractère d'espace. Seulement, il existe une multitude de types de caractère représentant l'espace et ce filtre ne prend pas en compte les caractères au-delà de la table ASCII (donc supérieur à 128).
Parmi les différents types d'espace, on retrouve les suivants :
- U+0020 Space
- U+00A0 No-break space
- U+1680 Ogham space mark
- U+180E Mongolian vowel separator
- U+2000 En quad
- U+2001 Em quad
- U+2002 En space
- U+2003 Em space
- U+2004 Three-per-em space
- U+2005 Four-per-em space
- U+2006 Six-per-em space
- U+2007 Figure space
- U+2008 Punctuation space
- U+2009 Thin space
- U+200A Hair space
- U+202F Narrow no-break space
- U+205F Medium mathematical space
- U+3000 Ideographic space
- U+0009 Horizontal tab
- U+000A Linefeed
- U+000B Vertical tab
- U+000C Formfeed
- U+000D Carriage return
- U+0085 Next line
- U+0009 Horizontal tab
- U+000A Linefeed
- U+000C Formfeed
- U+000D Carriage return
En PHP, pour qu'il soit tous pris en compte sans exception, il faudra utiliser le filtre « /\s/u ». « /u » permet de prendre en compte les caractères UTF-8.
Par exemple, si l'on souhaite supprimer la totalité des espaces d'une chaîne de caractères, on pourra utiliser le code suivant :
$new_string = preg_replace('/\s/u', '', $old_string);
Lire ...
Gérer une base SQLite avec Adminer
Adminer est une application web offrant une interface graphique et permettant de gérer un grand nombre de SGBD différents tels que MySQL, SQLite, PostgreSQL ou encore Oracle. Il est très simple d'installation et d'utilisation. En effet, il se présente sous la forme d'un simple et unique fichier PHP qu'il suffit de télécharger et de coller dans votre serveur web.
Pourtant, nativement, il est nécessaire de surcharger les méthodes "login" et "databases" pour pouvoir gérer ses bases SQLite. Voici un exemple de code pour ceci :
<?php
function adminer_object() {
class AdminerSoftware extends Adminer {
function login($login, $password) {
global $jush;
if ($jush == "sqlite")
return ($login === 'admin') && ($password === 'changeme');
return true;
}
function databases($flush = true) {
if (isset($_GET['sqlite']))
return ["/path/to/first.db", "/path/to/second.db"];
return get_databases($flush);
}
}
return new AdminerSoftware;
}
include "./adminer-4.2.5.php";
Bien entendu, dans le code ci-dessus, il vous faudra remplacer le chemin vers votre fichier Adminer ainsi que les chemins vers votre ou vos bases de données (le retour de la fonction "databases".
Lire ...PHP - Supprimer les commentaires HTML
Voici une petite expression régulière qui vous permettra de supprimer les commentaires HTML :
/<!--(.*)-->/Uis
Exemple d'utilisation :
$html = "<p>Hello World!</p><!-- début d'un div--><div>Justin II (latin : Flavius Iustinus Iunior Augustus, grec : Φλάβιος Ἰουστίνος ὁ νεότερος) règne sur l’Empire byzantin du 15 novembre 565 à sa mort le 5 octobre 578 ; il est le neveu et successeur de Justinien Ier.</div><!-- find du div -->";
$html = preg_replace('/<!--(.*)-->/Uis', '', $html);
echo "<p>Hello World!</p><div>Justin II (latin : Flavius Iustinus Iunior Augustus, grec : Φλάβιος Ἰουστίνος ὁ νεότερος) règne sur l’Empire byzantin du 15 novembre 565 à sa mort le 5 octobre 578 ; il est le neveu et successeur de Justinien Ier.</div>";
Lire ...
PHP - Supprimer des balises HTML
Voici une fonction simple afin de supprimer des balises HTML en PHP :
function removeTag($html, $tag) {
return preg_replace('#</?'.$tag.'[^>]*>#is', '', $html);
}
Exemple d'utilisation :
$html = "<p><span class='bold'>Texte en gras</span></p>";
echo removeTag($html, $tag);
// Affichera '<p>Texte en gras</p>'
Lire ...
Faire fonctionner cURL avec PHP 7 et Wamp
Après avoir installé Wamp et PHP 7 sur mon Windows 10, j'ai voulu utiliser cURL. Je l'ai donc rendu disponible dans les "php.ini" (ceux d'Apache et de PHP) et j'ai redémarré Wamp. Hélas, malgré cela, cURL demeurait inutilisable.
Suite à quelques recherches, j'ai finalement trouvé la solution pour résoudre le problème. Dans un premier temps, j'ai copié le fichier "libssh2.dll" du dossier de PHP et je l'ai collé dans le dossier "bin" d'Apache.
J'ai ensuite ouvert le fichier "httpd.conf" et j'ai rajouté la ligne suivante :
LoadFile "c:/wamp/bin/php/php7.0.4/libssh2.dll"
Bien entendu, vous devez remplacer le chemin ci-dessus par celui qui correspond à votre configuration.
Lire ...Réparer une chaîne HTML en PHP
En récupérant du contenu via un WYSIWYG en PHP, il y a des risques que des balises HTML mal formatées apparaissent. Pour éviter ce désagrément, PHP nous fournit une bibliothèque intitulée "Tidy". Cette dernière permet de nettoyer et manipuler des éléments HTML.
Pour l'utiliser, il faut, selon votre situation, soit simplement l'activer (si vous utilisez WampServer, par exemple), soit l'installer.
Voici un exemple simple d'utilisation :
<?php
ob_start();
?>
<html>
<head>
<title>test</title>
</head>
<body>
<p>error</i>
</body>
</html>
<?php
$buffer = ob_get_clean();
$tidy = tidy_repair_string($buffer);
echo $tidy;
?>
Dans notre exemple, le code HTML est erroné. En effet, notre balise "<p>" n'est pas fermée et le mot "error" est entouré d'une balise fermante "i" jamais ouverte. La fonction "tidy_repair_string" va simplement nettoyer le code et nous renvoyer un HTML tout propre.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>test</title>
</head>
<body>
<p>error</p>
</body>
</html>
La fonction susmentionnée a donc fermé la balise "p", supprimé la balise "i" et ajouté un "doctype".
Si vous souhaitez uniquement parser le "body" d'un HTML, il suffit d'appeler l'option "show-body-only" :
$str = “<p>error.”
tidy_repair_string($str, array('show-body-only' => true), "utf8");
echo $str;
Le code ci-dessus retournera le code HTML suivant :
<p>error.</p>
Pour plus d'informations :
Lire ...Convertir des fichiers Word ou Excel en PDF avec PHP
En utilisant le logiciel OpenOffice, il est possible de convertir des fichiers générés sous Microsoft Word ou Excel en PDF. Voici comment procéder ...
Au préalable, vous devez installer OpenOffice sur l'ordinateur ou le serveur sur lequel votre site Internet tourne.
Les fonctions génériques à implémenter :
private function MakePropertyValue($name,$value,$osm)
{
$oStruct = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$oStruct->Name = $name;
$oStruct->Value = $value;
return $oStruct;
}
private function word2pdf($doc_url, $output_url)
{
$osm = new \COM("com.sun.star.ServiceManager") or die ("Please be sure that OpenOffice.org is installed.\n");
$args = array($this->MakePropertyValue("Hidden",true,$osm));
$oDesktop = $osm->createInstance("com.sun.star.frame.Desktop");
if(file_exists($doc_url))
{
$oWriterDoc = $oDesktop->loadComponentFromURL("file:///".$_SERVER['DOCUMENT_ROOT'].'/'.$doc_url,"_blank", 0, $args);
$export_args = array($this->MakePropertyValue("FilterName","writer_pdf_Export",$osm));
$oWriterDoc->storeToURL($output_url,$export_args);
$oWriterDoc->close(true);
}
}
Appel de la fonction « word2pdf » :
$this->word2pdf('attachments/'.$currentEntity->getNameAttachment(),"file:///".$_SERVER['DOCUMENT_ROOT']."/attachments/".$nameFile.".pdf");
Lire ...
Rechercher
Tags
Articles récents
- Quel est le but de l'attribut "role" en HTML ?
- Changer la couleur de l'espace réservé (placeholder)
- Attention à cet email d’arnaque !
- Supprimer un fichier d'un référentiel Git sans le supprimer du système de fichiers local
- JS - Récupérer le dernier élément d'un tableau
- JS - Prévisualiser une image avec son upload
- PHP - Convertir une chaîne de caractères en un booléen
- PHP : Vérifier si une session a déjà été démarrée
- Créer un APK ou un AAB en ligne de commandes
- L'opérateur !! en Javascript