AllesMeins: preg_match_all() - array keys aus Suchmuster festlegen

Hi,

ich durchsuche mit preg_match_all() einen RSS-Fead nach darin enthaltenen Links. Die Links sind nach folgendem Muster aufgebaut: "http://server/irgend_ein_datei_name_EINDEUTIGE-ID.php". Was ich nun gerne erreichen würde wäre, dass ich die im Link enthaltene eindeutige ID extrahiere und als Array-Key verwende, den kompletten Link als passenden Wert dazu. Also dass ich dann soetwas erhalte:

Array(
[ID17] => "http://server/irgend_ein_datei_name_ID17.php"
[ID95] => "http://server/foo_bar_ID95.php"
)

Das Suchmuster selber ist nicht das Problem, das ist schnellgeschrieben. Aber hat irgendwer eine Idee wie ich einen Teil des Suchmusters automatisch als den Array-Key setzen kann?

Marc

p.s.: Ich weiß das es eigentlich nicht ganz koscher ist mir den Array-Key von außen vorgeben zu lassen, aber alle Daten (also auch der Feed) entstehen unter kontrollierten Bedingungen und das ist auch keine Anwendung für die Öffentlichkeit sondern ein Tool für mich.

  1. Lieber AllesMeins,

    Array(
    [ID17] => "http://server/irgend_ein_datei_name_ID17.php"
    [ID95] => "http://server/foo_bar_ID95.php"
    )

    so wie ich das sehe, wirst Du zwei Schritte benötigen:
    1.) Ergebnis-Array aus preg_match_all
    2.) For-Schleife zum Neuorganisieren Deines Arrays

    In 2. löschst Du den aktuellen (numerischen) Schlüssel, um danach einen ID-basierten ins Array einzufügen, der den Wert des vormaligen (numerischen) Schlüssels (Deine URL) erhält. Da Du über eine numerische Variable iterierst (deswegen for und nicht foreach!), kommst Du mit Deinen Schlüsseln nicht durcheinander und kannst auch brav mit count($treffer) die For-Schleife beenden.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. ich durchsuche mit preg_match_all() einen RSS-Fead nach darin enthaltenen Links. Die Links sind nach folgendem Muster aufgebaut: "http://server/irgend_ein_datei_name_EINDEUTIGE-ID.php". Was ich nun gerne erreichen würde wäre, dass ich die im Link enthaltene eindeutige ID extrahiere und als Array-Key verwende, den kompletten Link als passenden Wert dazu.

    Ich kritisiere dein Vorhaben nur ungern negativ - aber PCRE-Funktionen sind für solche Aufgaben nicht wirklich geeignet.

    Nutze einen xpath um das XML-Dokument zu zerlegen (z.B. simpleXML) das Objekt mit den gefundenen Links kannst du dann natürlich mit einem regulären Ausdrück parsen.

    Das spart Performance und ist wesentlich einfacher zu bewerktstelligen.

    Man muss sich nur einen RSS-Feed vorstellen, in dem in einem Eintrag beschrieben wird, wie ein RSS-Feed aufgebaut ist oder ein Eintrag auskommentiert ist. Mit regulären Ausdrücken stößt da schnell auf "unlösbare" Probleme.