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

    Responsive Design: Media Query

    Unter Responsive Design versteht man die dynamische Anpassung des Webseiten-Layouts an das Darstellungsmedium. Beispielsweise wird das GitHub-Ribbon in der oberen rechten Ecke erst ab einer Breite von 500 Pixeln angezeigt. Dafür ist dieser Code verantwortlich:

    Style-Angabe

    <style type="text/css"> @media all and (max-width: 500px) { #github_ribbon { display:none; } } </style>

    HTML

    <a href="https://github.com/sklueh"><img id="github_ribbon" style="z-index:2; position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub"></a>

    50 hilfreiche Werkzeuge zum Thema Responsive Design:
    50 fantastic tools for responsive web design

    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

    PGSQL: Duplikate in einer Tabelle finden

    Das folgende SQL Statement ermittelt alle Duplikate in einer Tabelle. Vorraussetzung hierfür ist, dass sich die Spalte mit dem Primärschlüssel an erster Stelle befindet.

    SELECT
        *
    FROM
    (  
      SELECT
      COUNT(substr(tmp.*::text, strpos(tmp.*::text, ','))) AS duplicate_count,
            substr(tmp.*::text, strpos(tmp.*::text, ',')) AS duplicate_entry
      FROM
          my_table AS tmp
      GROUP BY duplicate_entry
    )
    AS subquery
    WHERE duplicate_count > 1
    GROUP BY duplicate_count, duplicate_entry