Titel einer Webseite mit PHP auslesen

Die nachfolgende Methode liest den Titel einer beliebigen HTML-Seite mit Hilfe von PHP aus.

function getPageTitle($sURL)
{
    if( ($sHTML = file_get_contents($sURL)) &&
        preg_match("/<title>(.+)<\/title>/i", $sHTML, $aTitle))  
    {
        return trim($aTitle[1]);
    }
    return false;
}

echo utf8_decode(getPageTitle("http://sklueh.de"));

/*
 * Ausgabe:
 * Sebastian Klüh | Softwareentwicklung und was mich sonst so beschäftigt.
 */

PHP: Simple Table Builder

Simple Table Builder ist eine PHP Klasse, mit der sich HTML-Tabellen auf Grundlage eines mehrdimensionalen Arrays erzeugen lassen. Um die Usability zu verbessern wurde das jQuery-Plugin „Flexigrid“ (http://flexigrid.info) verwendet.

Features:

  • Titel-Text
  • Definition der Spaltenüberschriften
  • Höhe und Breite der Tabelle festlegen
  • Spaltensortierung
  • Definition der Spaltenbreite
  • Festlegen einer Standard-Spaltenbreite
  • Screenshot:

    Anwendungsbeispiel:

    require_once('SimpleTableBuilder.php');

    $aTableData = array_fill(0, 15, array('Vorname' => 'Max', 'Nachname' => 'Mustermann', 'Straße' => utf8_decode('Musterstraße 10')));
    $oSimpleTableBuilder = new SimpleTableBuilder();
    $oSimpleTableBuilder->setHeader('Vorname', array('Nachname' => '150'), utf8_decode('Straße')); //Die Breite einer Spalte kann über ein Array definiert werden (In diesem Fall: 150 Pixel). Ansonsten wird der Standardwert verwendet.
    $oSimpleTableBuilder->setTitle('Mein Array');       //Festlegen der Tabellen-Überschrift (optional)
    $oSimpleTableBuilder->setTableData($aTableData);    //Hier wird das Array übergeben, aus dem eine Tabelle erzeugt wird.
    $oSimpleTableBuilder->setHeight('300');             //Festlegen der Höhe (optional)
    $oSimpleTableBuilder->setWidth('600');              //Festlegen der Breite (optional)
    echo $oSimpleTableBuilder->buildTable();            //Tabelle erzeugen

    PHP: Simple Table Builder weiterlesen

    Lightweight Validator in PHP

    Ziel war es, mit wenig Zeilen einen möglichst einfach zu verwendenden Validator zu schaffen, der sich zudem einfach erweitern lässt und ohne viele Abhängigkeiten auskommt. Daraus entstanden ist folgendes:

    Anwendungsbeispiel:

    //Anwendungsbeispiel
    $oValidator = new Validator();

    $oValidator->isValid("http://sklueh.de", 'url'); //true
    $oValidator->isValid("http:/%$$^1sklueh.de", 'url');//false
    $oValidator->isValid("http://sklueh.de", 'url|min_length[16]|max_length[20]|required'); //true
    $oValidator->isValid("http://sklueh.de", 'url|min_length[17]|max_length[20]|required'); //false
    $oValidator->isValid("http://sklueh.de", 'url|min_length[10]|max_length[15]|required'); //false
    $oValidator->isValid("39.91", 'greater_than[39.90]'); //true
    $oValidator->isValid("40", 'greater_than[39.90]'); //true
    $oValidator->isValid("39.90", 'greater_than[39.90]'); //false
    $oValidator->isValid('2', 'match[1,2]'); //true
    $oValidator->isValid('3', 'match[1,2,5,7]'); //false
    $oValidator->isValid('o_O?', 'match[lol,rofl,o_O?,lololol,l000000l]'); //true
    $oValidator->isValid(md5('my_password'), 'equals['.md5('my_password').']'); //true
    $oValidator->isValid(md5('my_password'), 'equals['.md5('my_wrong_password').']'); //false
    $oValidator->isValid("1.1.2012", 'date'); //true
    $oValidator->isValid("30.2.2012", 'date'); //false
    $oValidator->isValid("2.2012", 'date'); //false

    Validator
    Diese Klasse kümmert sich um die Interpretation der Suchmuster.

    class Validator
    {
        public function isValid($mValue, $mPattern)
        {
            $aPatterns = explode("|", $mPattern);
           
            foreach( (array) $aPatterns as $sRule) //Alle definierten Regeln durchlaufen
            {
                $aRuleParams = $this->detachParams("[", "]", $sRule); //Zusätzliche Parameter von dem Regel-String lösen
                $oReflectionMethod = new ReflectionMethod($sValidationClass = "ValidatorRules", 'check_'.$sRule);
                if(!$oReflectionMethod->invoke(new $sValidationClass(), $mValue, $aRuleParams)) return false; //Methode für Validierung aufrufen
            } return true;
        }
       
        public function detachParams($cFirstChar, $cSecondChar, &$sRule)
        {
            preg_match_all("/\".$cFirstChar."(.*?)\".$cSecondChar."/", $sRule, $aMatches);
            $sRule = preg_replace("
    /\\[(.*?)\\]/", "", $sRule);
            return $aMatches[1];
        }
    }

    Lightweight Validator in PHP weiterlesen

    Alle Elemente eines mehrdimensionalen Arrays durchlaufen und bearbeiten

    Wenn mit den Werten eines mehrdimensionalen Arrays gearbeitet wird, dann kommen häufig Schleifen zum Einsatz. Das kann bei großen verschachtelten Arrays viel „Schreibarbeit“ bedeuten. Die PHP-Funktion „array_walk_recursive“ vereinfacht das Ganze. In dem nachfolgenden Beispiel werden alle Werte des Arrays in base64 kodiert.

    Code:

    $aData = array();
    $aData['ebene1']            = array_fill(0, 2, 'Wert1');
    $aData['ebene1']['ebene2']  = array_fill(0, 2, 'Wert2');

    var_dump($aData);

    /**
     * Ausgabe (vorher)
     array(1) { ["ebene1"]=> array(3)
                             {[0]=> string(5) "Wert1"
                              [1]=> string(5) "Wert1"
                              ["ebene2"]=> array(2)
                                           {[0]=> string(5) "Wert2"
                                            [1]=> string(5) "Wert2"}}
    }
    */


    function encodeToBase64(&$aItem, $mKey)
    {
        $aItem = base64_encode($aItem);
    }

    array_walk_recursive($aData, "encodeToBase64");

    var_dump($aData);

    /*
     * Ausgabe (nachher):
    array(1) { ["ebene1"]=> array(3)
                            {[0]=> string(8) "V2VydDE="
                             [1]=> string(8) "V2VydDE="
                             ["ebene2"]=> array(2)
                                          {[0]=> string(8) "V2VydDI="
                                           [1]=> string(8) "V2VydDI="}}
    }
    */

    PHP: Text zwischen zwei Zeichen extrahieren

    Die folgende Methode extrahiert einen beliebigen Text zwischen zwei definierten Zeichen.

    Code:

    function extractStringBetween($cFirstChar, $cSecondChar, $sString)
    {
        preg_match_all("/\".$cFirstChar."(.*?)\".$cSecondChar."/", $sString, $aMatches);
        return $aMatches[1];
    }

    $sMyString = "
    Bitte alle eingeklammerten Begriffe extrahieren: [Symfony] [CodeIgniter] #PHP# [Zend]";

    var_dump(extractStringBetween("[", "]", $sMyString));

    /*
     * Ausgabe:
     *
    array(3)
    {
      [0]=>
      string(7) "Symfony"
      [1]=>
      string(11) "CodeIgniter"
      [2]=>
      string(4) "Zend"
    }
    */