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

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>