найти URL в HTML-код - PullRequest
       3

найти URL в HTML-код

1 голос
/ 28 сентября 2011

Я хочу найти URL в HTML-коде с PHP или JS, например, у меня есть этот текст

<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>

Я хочу взять только "http://2010.pcnews.am/images/stories/2011/internet/chinese-computer-user-smoke.jpg", Заранее благодарен

Ответы [ 5 ]

2 голосов
/ 28 сентября 2011

Это довольно сложная задача, и хотя регулярное выражение может показаться более простым, оно слишком проблематично. Следующий код будет проходить через XML-файл (называемый some.xml , но вам, очевидно, потребуется это изменить) и собирать источники изображений в массив $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');
            }
        }
    }
}

Я проверил его по предоставленному вами XML и получил следующий результат:

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

Я помещаю его в массив, если имеется более одного description с изображениями.

1 голос
/ 28 сентября 2011

Вы можете использовать javascript или jQuery для получения атрибута src изображения.

document.getElementsByTag("img")[x].src
0 голосов
/ 28 сентября 2011

Регулярные выражения являются хрупкими для разбора текста и не используют врожденную структуру документа. Использование RegEx для поиска материалов в размеченном документе, как правило, является плохой практикой.

Вместо этого используйте встроенный в PHP DOMNode и DOMXPath .

0 голосов
/ 28 сентября 2011

В php можно сделать так:

<?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]);

?>
0 голосов
/ 28 сентября 2011

Используйте регулярное выражение, чтобы найти содержимое между src=" и предшествующим "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...