开发者

find url in html code

I want tu find url in html code with PHP or JS e.g i have this text

<description>
<![CDATA[<p>
<img" src="http://2010.pcnews.am/images/stories/2011/internet/chinese-computer-user-smoke.jpg" border="0" align="left" "/>
Երեկ Պեկինի ինտերնետ-սրճարաններից մեկում մահացել է 33-ամյա մի չինացի, ով  27 օր շարունակ անցկացրել էր համակարգչի առաջ:  Հաղորդում է չինական «Ցյանլունվան» պարբերականը:</p>
<p>Աշխատանք չունեցող չինացին  մեկ ամիս շարունակ չի լքել ինտերնետ-սրճարանը ՝ այդ ամբողջ ընթացքում սնվելով արագ պատրաստվող մակարոնով:</p>
<p />

Նույնիսկ ամանորյա տոները նա անցկացրել է համակարգչի առաջ. Պեկինի բնակիչները նշում են Նոր տարին Լուսնային օրացույցով՝ փետրվարի 3-8-ը: Մահվան պատճառները չեն հաղորդվում:
]]>
</description>

i want take only "http://2010.pcnews.am/images/st开发者_开发知识库ories/2011/internet/chinese-computer-user-smoke.jpg" , Thank in advance


This is a rather complicated task and while regex may seem easier, it is far too problematic. The following code will go through an XML file (called some.xml, but you’ll obviously need to change that) and gather the image sources into an array, $images.

$images = array();

$doc = new DOMDocument();
$doc->load('some.xml');

$descriptions = $doc->getElementsByTagName("description");
foreach ($descriptions as $description) {
    foreach($description->childNodes as $child) {
        if ($child->nodeType == XML_CDATA_SECTION_NODE) {
            $html = new DOMDocument();
            @$html->loadHTML($child->textContent);
            $imgs = $html->getElementsByTagName('img');
            foreach($imgs as $img) {
                $images[] = $img->getAttribute('src');
            }
        }
    }
}

I tested it against the XML you supplied an got the following result:

Array
(
    [0] => http://2010.pcnews.am/images/stories/2011/internet/chinese-computer-user-smoke.jpg
)

I put it into an array in case there is more than one description with images.


You can use javascript or jQuery to get the image's src attribute.

document.getElementsByTag("img")[x].src


Use regex to find content between src=" and preceding "


In php could be done like this:

<?php

$txt = 'text here <img src="http://domain.com/something.png" border="0" align="left" "/> more
test and <em>html</em> around here
<p> thats it </p>';

preg_match('/src="([^"]*)"/', $txt, $matches);
var_dump($matches[1]);

?>


Regular expressions are brittle for text parsing and do not take advantage of the document's inherent structure. Using RegEx to find stuff in a marked up document is generally a poor practice.

Use PHP's built in DOMNode and DOMXPath instead.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜