Accueil - PHP Tout afficher

PHP - Déterminer si une URL est ou non absolue

Wakonda - PHP Posté le 28 mai 2018

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

Wakonda - PHP Posté le 10 mars 2018

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

Wakonda - Apache, PHP Posté le 21 janvier 2018

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

Wakonda - PHP Posté le 14 janvier 2018

« \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);

Pour plus d'explication

Lire ...

Gérer une base SQLite avec Adminer

Wakonda - PHP, SQLite Posté le 17 décembre 2017

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".

Pour télécharger Adminer

Lire ...

PHP - Supprimer les commentaires HTML

Wakonda - HTML, PHP Posté le 18 janvier 2017

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

Wakonda - HTML, PHP Posté le 17 janvier 2017

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 ...

Silex - Récupérer l'objet '$request' avec Silex 2.*

Wakonda - PHP, Silex Posté le 30 décembre 2016

Depuis la mise à jour de Silex 1.* à Silex 2.*, l'accès à l'objet "$request" a été modifié.

Dans Silex 1.* :

$app["request"]

Dans Silex 2.* :

$app['request_stack']->getCurrentRequest()

 

Lire ...

Faire fonctionner cURL avec PHP 7 et Wamp

Wakonda - PHP Posté le 7 février 2016

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

Wakonda - PHP Posté le 4 février 2016

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

Wakonda - PHP Posté le 1 janvier 2016

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 ...

Détection du protocole avec PHP

Wakonda - PHP Posté le 1 janvier 2016

$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'?'https':'http';

 

Lire ...

Rechercher

Tags

Publicité

Suivez-nous

Aidez-nous !