JavaScript: Mehrere Wörter in einem String ersetzen

Diese JavaScript-Funktion ersetzt alle Wörter in dem String (str) mit den im Parameter „dictionary“ festgelegten Werten. Möglich wird das durch den Aufruf einer Callback-Funktion mit dem auf das Suchmuster (\w+) passenden Wert. In diesem Fall werden nur alphanumerische Wörter beachtet. Dieses Verhalten kann aber beliebig über den verwendeten regulären Ausdruck angepasst werden.

Code:

function dictionaryReplace(str, dictionary)
{
    return str.replace(/\w+/g,
    function(regex_match)
    {
        return dictionary[regex_match] || regex_match;
    })
}

JavaScript: Mehrere Wörter in einem String ersetzen weiterlesen

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

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

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"
}
*/

Entfernen von überflüssigen Whitespaces aus HTML-Code mit PHP

Reduziert den Umfang des HTML-Codes indem überflüssige Whitespaces am Zeilenanfang und am Zeilenende durch einen regulären Ausdruck entfernt werden.

Code:

function minify($sHTML)
{
   return preg_replace('/([\s\t\n]*)(<.*>)([\s\t\n]*)/', '$2', $sHTML);
}

 

Beispiel vorher:

<input type="submit" name="" id="doaction" class="button-secondary action" value="Übernehmen"  />
        </div>
        <div class="alignleft actions">
        <select name=\'m\'>
            <option selected=\'selected\' value=\'0\'>Jedes Datum</option>
<option  value=\'201206\'>Juni 2012</option>
<option  value=\'201201\'>Januar 2012</option>
        </select>
<select name=\'cat\' id=\'cat\' class=\'postform\' >
    <option value=\'0\'>Alle Kategorien</option>
    <option class="level-0" value="1">Allgemein</option>
    <option class="level-0" value="5">C#</option>
    <option class="level-0" value="10">JavaScript</option>
    <option class="level-0" value="3">PHP</option>
    <option class="level-0" value="9">reguläre Ausdrücke</option>
</select>

 

Beispiel nachher:

<input type="submit" name="" id="doaction" class="button-secondary action" value="Übernehmen"  /></div><div class="alignleft actions"><select name='m'><option selected='selected' value='0'>Jedes Datum</option><option  value='201206'>Juni 2012</option><option  value='201201'>Januar 2012</option></select><select name='cat' id='cat' class='postform' ><option value='0'>Alle Kategorien</option><option class="level-0" value="1">Allgemein</option><option class="level-0" value="5">C#</option><option class="level-0" value="10">JavaScript</option><option class="level-0" value="3">PHP</option><option class="level-0" value="9">reguläre Ausdrücke</option></select>