kostenloser Webspace werbefrei: lima-city


regulärer ausdruck - innerhalb klammern

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    badiya

    Kostenloser Webspace von badiya, auf Homepage erstellen warten

    badiya hat kostenlosen Webspace.

    Abend

    Ich verzweifle noch an diesen dämlichen regulären ausdruck.

    Ein Array das mit zeilen gefüllt ist die html code enthalten. In jeder Zeile ist ein Datum in Klammern enthalten. Dieses Datum will ich rausfiltern. Sieht z.B. so aus: (13.06 - 22:26)

    Ich kriege den regulären ausdruck nicht hin ... -.-

    foreach ($datei as $zeile) {
            preg_match("/\(.*\)/", $zeile, $a);
            echo $a[1][0];
        
        }


    Der obige Code, einer der unzähligen Versuche, gibt nur folgende Fehlermeldung:

    Notice: Undefined offset: 1

    Hilfe bitte
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. $a[1] existiert nicht. Warscheinlich, weil der Regex falsch ist.

    preg_match("/(.*)/", $zeile, $a);


    Beitrag zuletzt geändert: 13.6.2011 22:34:39 von fabo
  4. Autor dieses Themas

    badiya

    Kostenloser Webspace von badiya, auf Homepage erstellen warten

    badiya hat kostenlosen Webspace.

    ah logisch wie doof von mir, hätt auch von der zeilennummer sehen können das die fehlermeldung das array betrifft...

    Ich glaub das sind halt einfach zuviele Bäume im Wald..

    Der von dir gepostete Ausdruck ergibt

    <<<<<<


    genausoviele wie Zeilen da sind. Das Ergebnis hatte ich auch öfters, danke aber dennoch!! Das ganze ist mir echt ein rätsel..

    Hier ist eine Beispielzeile:

    <p><span class="name">User: </span><span class="date">(13.06 - 22:26) </span><span class="txt">asdfasdf</span></p>
  5. Logischerweise ergibt mein Ausdruck nix logisches. Was genau willst du extrahieren?!
  6. Autor dieses Themas

    badiya

    Kostenloser Webspace von badiya, auf Homepage erstellen warten

    badiya hat kostenlosen Webspace.

    Das Datum sollte ausgegeben werden, z.B. 13.06 - 22:26
  7. '#\([^)]+\)#'


    Damit sollte es gehen.
  8. Autor dieses Themas

    badiya

    Kostenloser Webspace von badiya, auf Homepage erstellen warten

    badiya hat kostenlosen Webspace.

    sorryy aber der gibt wieder diesen undefinierten offset fehler...

    sag ich ja, regex ist doof ... ..

    :((((

    Ich habe endlich einen übersichtlichen Regex generator gefunden der nicht noch komplizierter ist als regex ansich. Über den Ausdruck sagt es folgendes:

    »Unbekannter Modifier«
    gibt an, dass ein Modifier verwendet wurde, der nicht existiert. Das kann auch daraus resultieren, dass im Suchmuster ein Zeichen verwendet wurde, das schon als Delimiter herhalten musste. Dadurch wird das darauf folgende Zeichen als Modifier interpretiert.

    Hier das Tool:

    http://regexp-evaluator.de/evaluator/

    Allerdings komm ich damit auch net klar, egal was ich da eingebe kommt die selbe Fehlermeldung raus... Ist das kaputt oder bin ich echt zu doof dafür ...

    Beitrag zuletzt geändert: 13.6.2011 23:21:47 von badiya
  9. Du musst das schon richtig anwenden, dann geht das auch ;)

    foreach ($datei as $zeile) {
    	preg_match('#\([^)]+\)#', $zeile, $a);
    	if(is_array($a)) {
    		echo $a[0][0];
    	}
    }


    http://regexp-evaluator.de/evaluator/3ed3ac60ab295166fa8a95dd866fddf6/#ergebnis

    Beitrag zuletzt geändert: 13.6.2011 23:24:10 von fabo
  10. Autor dieses Themas

    badiya

    Kostenloser Webspace von badiya, auf Homepage erstellen warten

    badiya hat kostenlosen Webspace.

    *rofl*

    Ich gebe das genauso ein wie du das oben gepostet hast:

    $datei = "msg.html";
    
    $datei = file($file);
            
    foreach ($datei as $zeile) {
            preg_match('#\([^)]+\)#', $zeile, $a);
            echo $a[0][0];
    }


    Jetzt haut er mir

    4 offene Klammern und 2 undefinied offsets hin??

    Ich danke dir dennoch echt für deine Hilfe! Wieso ist das nur so kompliziert...
  11. warum benutzt du denn ein zweidimensionales Array :confused: und nicht einfach
    echo $a[0]
    ?
  12. War mein Fehler ;)

    foreach ($datei as $zeile) {
    	preg_match('#\([^)]+\)#', $zeile, $a);
    	if(is_array($a)) {
    		echo $a[0];
    	}
    }


    Edit:

    Das Säugetier war schneller :D

    Beitrag zuletzt geändert: 13.6.2011 23:27:49 von fabo
  13. Autor dieses Themas

    badiya

    Kostenloser Webspace von badiya, auf Homepage erstellen warten

    badiya hat kostenlosen Webspace.

    Vielen vielen Dank!

    Ist wirklich eine gute Frage von Lama, und ich hab keine Ahnung. Das ist so ein Punkt wo man nix mehr durchblick hat und einfach alles ausm Internet copypastet.. bleibt halt was falsches übrig...

    Es funktioniert wirklich prima, aber die Klammern sind noch dabei, die sollten aber raus... Aber hab euch schon genug genervt, vielen Dank nochma, ich werd morgen weitermachen, hat heut kein sinn mehr denke ich... hirn ist zu...
  14. foreach ($datei as $zeile) {
    	preg_match('#\(([^)]+)\)#', $zeile, $a);
    	if(is_array($a)) {
    		echo $a[1];
    	}
    }
  15. badiya schrieb:
    Ist wirklich eine gute Frage von Lama, und ich hab keine Ahnung. Das ist so ein Punkt wo man nix mehr durchblick hat und einfach alles ausm Internet copypastet.. bleibt halt was falsches übrig...


    Tip an dieser Stelle: Wenn man keine Möglichkeit hat, den Code ordentlich zu debuggen, kann in so einer Situation ein gut gezieltes
    print_r($a);
    wahre Wunder vollbringen ;)
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!