mit RegExp Einträge aus Array fischen

Tim Blog

Angesehenes Mitglied
Hallo,

ich habe ein Array ($ausgabe) und möchte nun eine bestimmte Funktion ausführen. Das Array soll nicht gleich $wort sein, aber wenn ein Eintrag im Array aus einem Wort+ einem einzelnen Buchstaben (oder Zahl) besteht, dann muss auch $ausgabe diese Vorraussetzung erfüllen.

Ich habe das Array mit folgendem Code untersucht:
CODE for ($i=0; $i<count($ausgabe); $i++) {
if (str_replace(" ", "", $ausgabe[$i])!=str_replace(" ", "", $wort) && preg_match("/(( )[a-z0-9]?$)|(^[a-z0-9]?( )|( )[a-z0-9]?( ))/is", $ausgabe[$i])==preg_match("/(( )[a-z0-9]?$)|(^[a-z0-9]?( )|( )[a-z0-9]?( ))/is", $wort)) { ... } }


Wenn ich aus dem == ein != mache bekomme ich garkeine Ergebnisse (also funktionierts), aber wenn ich es mit == versuche gibt er trotzdem ein $ausgabe aus, das die Vorraussetzung nicht erfüllt.

Ich hoffe man versteht mein Problem
huh.gif
, sieht jemand einen Fehler, oder ahnt welchen Gedanklichen Fehler ich gemacht habe?

mfg
 
Leider versteh ich's nicht ganz, sonst könnte ich dir evtl. helfen. So wie ich es verstehe, suchst du einen Weg zu prüfen:
1. ob $wort nicht die selben Zeichenfolge (ausgenommen Leerzeichen) wie $ausgabe[$i] hat
2. wenn $wort eine Buchstabenfolge ist, ob $ausgabe[$i] auch nur eine Buchstabenfolge ist
3. wenn $wort eine Alphanumerisch ist, ob $ausgabe[$i] auch alphanumerisch ist

habe ich das richtig verstanden?

Dann könnte man das evtl. so machen:
CODE
$n_wort = str_replace(' ', '', $wort);
$wort_numeric = preg_match('/\d+/is', $n_wort);
$wort_alpha = preg_match('/\w+/is', $n_wort);


foreach ($ausgabe as $eintrag) {
$n_eintrag = str_replace(' ', '', $eintrag);

$eintrag_numeric = preg_match('/\d+/is', $n_eintrag);
$eintrag_alpha = preg_match('/\w+/is', $n_eintrag);
if ( ($n_eintrag != $n_wort)
&& ($eintrag_numeric == $wort_numeric)
&& ($eintrag_alpha == $wort_alpha) ) {

echo 'da: ' . $eintrag;
}
}



Ich habe es mit absicht mit so vielen Variablen gemacht, so kann man leichter durchsteigen, wie es nun gemeint ist.
 
Danke für deine Hilfe,

also $wort ist ein Suchbegriff bei dem die Buchstaben in verschiedenen Kombinationen vertauscht wurden und dann in dem Array $ausgabe gespeichert werden. Deshalb soll einmal geprüft werden, ob $wort != $ausgabe[$i] und dann eben noch ob es einen einzelnen Buchstaben oder eine einzelne Zahl in $wort gibt (z.B. der Suchbegriff gta 3) der einzelne Teil soll in jedem Ergebnis vorkommen wenn er existiert. Ich hatte eigentlich gedacht, dass es mit preg und den RegExps funktioniert dies zu überprüfen.

mfg & nochmal vielen dank
 
vielleicht so:
CODE $wort_anhang = NULL;
if (preg_match('/[\d\w]+\s+([\d\w]{1})/is', $wort, $in_wort))
$wort_anhang = $in_wort[1];

foreach($ausgabe as $eintrag) {
if (str_replace(' ', '', $eintrag) != str_replace(' ', '', $wort)) {
$erlaubt = true;

if ( (isset($wort_anhang)) && (preg_match('/[\d\w]+\s+([\d\w]{1})/is', $eintrag, $in_eintrag)) )
$erlaubt = $wort_anhang == $in_eintrag[1];

if ($erlaubt)
echo $eintrag;
}
}
 
Zurück
Oben