XML Feed <description> zerlegen und Bild Url herausfiltern - preg_match ??


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

klausi89

Erfahrenes Mitglied
Hallo ich hätte da mal wieder eine Frage , und zwar lese ich einen Technik Feed von techmeme ein und kann einzelne Werte ausgeben mit folgendem Code

PHP:
if( !$xml = simplexml_load_file('https://www.techmeme.com/feed.xml') ) {
    die('Error - can´t reading the XML file!');
}
$out = array();
$i = 1;         // Anzahl Datensätze
if( !isset($xml->channel[0]->item) ) {
    die('No Items found! ');
}
foreach($xml->channel[0]->item as $item) {
    if( $i-- == 0 ) {
        break;
    }

    $out[] = array(
        'title'        => (string) $item->title,
        'description'  => (string) $item->description,
        'link'         => (string) $item->guid,
        'date'         => date('d.m.Y', strtotime((string) $item->pubDate))
    );
}

die Ausgabe erfolgt dann so

Code:
<?php foreach ($out as $value) {
        echo $value['date'].'<br>';
        echo $value['title'].'<br>';
        echo $value['link'].'<br>';
        echo $value['img']; // ???????????????????
        } ?>
nun würde ich eben gerne die Description so zerlegen das ich nur die url des pictures bekomme. Ich denke mal das dies mit

preg_match geschehen muss, leider habe ich keine Ahnung wie sowas aussieht, außerdem ist in der <description> noch ein .png mit enthalten (sehr kleines Picture) welches auch noch "aussortiert" werden müßte, vielleicht kann mir dort mal jemand helfen (hab leider immer noch ziemliche Schwierigkeiten mit php, lerne aber gerne dazu).

die <description> des xml feeds sieht wie folgt aus.....

XML:
<description>
<A HREF="https://www.nytimes.com/2020/01/05/nyregion/nyc-tech-facebook-amazon-google.html">
<IMG VSPACE="4" HSPACE="4" BORDER="0" ALIGN="RIGHT" SRC="http://www.techmeme.com/200105/i6.jpg"></A> 
<P><A HREF="http://www.techmeme.com/200105/p6#a200105p6" TITLE="Techmeme permalink"><IMG WIDTH=11 HEIGHT=12 SRC="http://www.techmeme.com/img/pml.png" STYLE="border:none;padding:0;margin:0;"></A> 
Matthew Haag / <A HREF="https://www.nytimes.com/">New York Times</A>:<BR> <SPAN STYLE="font-size:1.3em;"><B>
<A HREF="https://www.nytimes.com/2020/01/05/nyregion/nyc-tech-facebook-amazon-google.html">
Amazon, Apple, Facebook, and Google are expected to have a combined 20,000 workers in New York City by 2022, mostly concentrated along Manhattan's West Side
</A></B></SPAN>
&nbsp; &mdash;&nbsp; Amazon, Apple, Facebook and Google will soon have 20,000 workers in New York City, many in offices on the West Side.</P>
</description>
also daraus hätte ich gerne die url des .jpg - der rest ist alles unnötig für mich - (url vom png sollte auch nicht berücksichtigt werden)

Ist das überhaupt möglich ???

regards
 

Yaslaw

n/a
Moderator
Pattern: /\<IMG[\s\S]*?SRC\=\"([^\"]+\.jpg)\"/mi
Pattern-Test & Erklärungen zu genau diesem Pattern: Test bei regex101.com

Der folgende Test gibt http://www.techmeme.com/200105/i6.jpg aus
PHP:
<pre>
<?php
$re = '/\<IMG[\s\S]*?SRC\=\"([^\"]+\.jpg)\"/mi';
$str = '<description>
<A HREF="https://www.nytimes.com/2020/01/05/nyregion/nyc-tech-facebook-amazon-google.html">
<IMG VSPACE="4" HSPACE="4" BORDER="0" ALIGN="RIGHT" SRC="http://www.techmeme.com/200105/i6.jpg"></A> 
<P><A HREF="http://www.techmeme.com/200105/p6#a200105p6" TITLE="Techmeme permalink"><IMG WIDTH=11 HEIGHT=12 SRC="http://www.techmeme.com/img/pml.png" STYLE="border:none;padding:0;margin:0;"></A> 
Matthew Haag / <A HREF="https://www.nytimes.com/">New York Times</A>:<BR> <SPAN STYLE="font-size:1.3em;"><B>
<A HREF="https://www.nytimes.com/2020/01/05/nyregion/nyc-tech-facebook-amazon-google.html">
Amazon, Apple, Facebook, and Google are expected to have a combined 20,000 workers in New York City by 2022, mostly concentrated along Manhattan\'s West Side
</A></B></SPAN>
&nbsp; &mdash;&nbsp; Amazon, Apple, Facebook and Google will soon have 20,000 workers in New York City, many in offices on the West Side.</P>
</description>';

preg_match($re, $str, $matches);

var_dump($matches[1]);


?>
</pre>
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Neue Beiträge