|
|
|
Gesammelte Codeschnipsel
Zurück zur Übersicht Da wir oft auch fertige Funktionen in den Themen finden, mach ich dieses Thema mal auf. Hier können wir wichtige Funktionen sammeln, die im Lauf eines Themas entstanden sind. Dafür dient folgende Form:
[ size=17 ][ b ]Titel[ /b ][ /size ]
[ i ]getestet mit: (PHP-Versionen)[ /i ]
[ b ]Thema:[ /b ] [ i ][ url=ThemenURL ]Themenname[ /url ][ /i ]
Kurze Beschreibung zur Funktions
[ php ]<?php
Funktionscode
[ /php ]
[ b ]Beispiel:[ /b ]
[ php ]<?php
Beispielcode
[ /php ]
So, damit ich direkt selbst den Anfang mache:
Text in einem Array suchen
getestet mit: 5.0.x, 5.1.x, 5.2.x
Thema: Art "like" bei Array
In dem genannten Thema wurde die Frage gestellt, ob es möglich ist, ein Array auch nach einem Text zu durchsuchen und eben nicht nur, wenn HA gesucht wird, nur HA zufinden, sondern auch Hallo und so weiter.
Dies ist mit in_array nicht möglich. Zudem wird hier nur gesagt, das etwas gefunden wurde, und nicht der Wert selbst.
Eine gute Methode hierfür sind Reguläre Ausdrücke (RegExp/Regex). Dazu wird dann die Funktion preg_match gebraucht.
Hier bei ist nun eine Funktion raus gekommen, die 2 Parameter braucht. Das Array selbst, welches durchsucht werden soll, und den zu suchenden Text. Dieser wird in einen Regulären Ausdruck gepackt. Anschließend wird untersucht, ob der Übergebene Wert ein Array ist, oder nicht.
Ist es kein Array, wird der Wert auf den Regulären Ausdruck untersucht, und wurde der Text gefunden, der Wert zurück gegeben, ansonsten false. Ist der erste Parameter ein Array, wird dieses durch ein foreach-Konstruckt bearbeitet und wieder an die eigene Funktions übergeben.
Kommt ein Wert zurück, wird einem Array der Schlüssel des zu durchsuchenden Arrays hinzu gefügt, sowie der gefunden Wert, das geht solange, bis alle Ebenen des Arrays abgearbeitet sind. Somit können auch mehr dimensionale Arrays durchsucht werden.
Der Rückgabewert der Funktion ist ein neues Array mit den gefundenen Werten!
| PHP |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
|
<?php
class arraylib {
static public function array_search($array, $search) {
if (!is_array($array)) {
$search = addcslashes($search, "\\#\"{([])}$.^");
$pattern = "#".$search."#si";
if (preg_match($pattern, $array)) {
return $array;
}
else {
return false;
}
}
else {
$newArray = array();
foreach ($array AS $key => $value) {
if(self::array_search($value, $search) != false) {
$newArray[$key] = self::array_search($value, $search);
}
}
return $newArray;
}
}
}
?>
|
|
Beispiel:
Die Funktion ist in eine Klasse verpackt worden. Das folgende Beispiel, zeigt euch die Benutzung.
| PHP |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
|
<?php
$array1 = array();
$array1[0] = "Hallo";
$array1[1] = "Welt.";
$array1[2] = "Hallo Welt.";
$array1[3] = array();
$array1[3]['gut'] = "Freundlich sein ist gut.";
$array1[3]['schlecht'] = "Hass ist etwas schlechtes";
$array1[4] = array();
$array1[4][0] = array();
$array1[4][0]['drogen'] = array();
$array1[4][0]['drogen'][0] = "Hasch";
$array1[4][0]['drogen'][1] = "Speed";
$array1[4][1]['medikamente'] = array();
$array1[4][1]['medikamente'][0] = "Hustensaft";
$array1[4][1]['medikamente'][1] = "Halsschmerztabletten";
$arrayfind = arraylib::array_search($array1, "ha");
echo "<pre>";
var_dump($arrayfind);
echo "</pre>"
?>
|
|
Hier bei erscheint nun folgende Ausgabe:
| Code |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
| array(4) {
[0]=>
string(5) "Hallo"
[2]=>
string(11) "Hallo Welt."
[3]=>
array(1) {
["schlecht"]=>
string(25) "Hass ist etwas schlechtes"
}
[4]=>
array(2) {
[0]=>
array(1) {
["drogen"]=>
array(1) {
[0]=>
string(5) "Hasch"
}
}
[1]=>
array(1) {
["medikamente"]=>
array(1) {
[1]=>
string(20) "Halsschmerztabletten"
}
}
}
} |
|
Wie hier sehen könnt, wird jedes Wort gefunden, wo ein ha vorkommt. Das neue Array könnte nun weiter verarbeitet werden.
Kommentare
Zurück zur Übersicht
Autor GameR
|
|
|
|