php - Extract Path from String in Array
The Data come from a XML file to diplay them on a HTML site. I need to extract only the Picture URL??s in " " from all elemnts in my array for Output. I have try that with preg_match but i dont get any result. What i doing wrong in my code?
public function xmlParserPICtn():string
{
$valuesPICtn = $this->xml->xpath("//OBJEKT[@ID='91727']//PICTURE");
$searchpattern="@SRC=(.*)width@";
preg_match($searchpattern, $valuesPICtn, $valuesPICt); //Search-String
foreach ($valuesPICt as $PICelements)
{
$display .= '<li>';
$display .= ''.$PICelements->PIC.'';
$display .= '</li>';
}
$display .= '';
return $display;
}
<?xml version="1.0" encoding="utf-8"?>
<OBJEKT ID="91727">
<PICTURE ID="7">
<ID>7</ID>
<PIC><IMG SRC="https://d1.cloudfront.net/00722.jpg" width="640" height="480" BORDER=0></PIC>
</PICTURE>
<PICTURE ID="11">
<ID>11</ID>
<PIC><IMG SRC="https://d1.cloudfront.net/01123.jpg" width="640" height="480" BORDER=0></PIC>
</PICTURE>
<PICTURE ID="2">
<ID>2</ID>
<PIC><IMG SRC="https://d1.cloudfront.net/00224.jpg" width="640" height="480" BORDER=0></PIC>
</PICTURE>
<PICTURE ID="9">
<ID>9</ID>
<PIC><IMG SRC="https://d1.cloudfront.net/00925.jpg" width="640" height="480" BORDER=0></PIC>
</PICTURE>
</OBJEKT>Answer
Solution:
the first problem is variable name preg_match($searchpattern, $valuesPICtnN, $valuesPICt); and correct is $valuesPICtn
Even so, it doesn't solve the final problem!!!!
As you have already converted the XML from string to object.
Just use the code below that I tested and it works.
$content = '<?xml version="1.0" encoding="utf-8"?><OBJEKT ID="91727"><PICTURE ID="7"><ID>7</ID><PIC><IMG SRC="https://d1.cloudfront.net/00722.jpg" width="640" height="480" BORDER=0></PIC></PICTURE><PICTURE ID="11"><ID>11</ID><PIC><IMG SRC="https://d1.cloudfront.net/01123.jpg" width="640" height="480" BORDER=0></PIC></PICTURE><PICTURE ID="2"><ID>2</ID><PIC><IMG SRC="https://d1.cloudfront.net/00224.jpg" width="640" height="480" BORDER=0></PIC></PICTURE><PICTURE ID="9"><ID>9</ID><PIC><IMG SRC="https://d1.cloudfront.net/00925.jpg" width="640" height="480" BORDER=0></PIC></PICTURE></OBJEKT>';
$xml = simplexml_load_string($content);
$valuesPICtn = $xml->xpath("//OBJEKT//PICTURE");
$display = '';
foreach ($valuesPICtn as $PICelements) {
$display .= '<li>';
$display .= ''.$PICelements->PIC.'';
$display .= '</li>';
}
echo "<ul>";
echo $display;
echo "</ul>";
You just need to filter all as occurrences with this $valuesPICtn = $xml->xpath("/OBJEKT//PICTURE");
and then then
foreach ($valuesPICtn the $PICelements) {
...
Source