Недавно я только что импортировал весь контент с сайта blogger в wordpress, и мне нужно немного поучаствовать.
Я работаю внутри single.php, и я хочу получить каждый <a><img src=""/></a>
из the_content();
, Мой php немного лучше дрянной.
Я понимаю, что это дает мне первый образ сообщения, но мне нужно что-то подобное, которое дает мне все изображения (не признанные изображения) из the_content();
,
function catch_that_image() { global $post, $posts; $first_img = ''; ob_start(); ob_end_clean(); $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); $first_img = $matches[1][0]; if(empty($first_img)) { $first_img = "/path/to/default.png"; } return $first_img; }
Взгляните на собственный объект DOMDocument PHP. http://www.php.net/manual/en/class.domdocument.php
Вы загрузите свой контент и загрузите его в DOMDocument через loadHTML()
. THEN вы можете использовать getElementsByTagName()
чтобы получить все изображения.
http://www.php.net/manual/en/domdocument.getelementsbytagname.php
$document = new DOMDocument(); $document->loadHTML($post->post_content); $images = $document->getElementsByTagName('img');
Тривиальная задача для DOMDocument
:
$doc = new DOMDocument(); $doc->loadHTML($post->post_content); foreach ($doc->getElementsByTagName('img') as $img) $img->attributes['src'] = '/path/to/default.png'; // or whatever you want to do return $doc->saveHTML();
Вам нужно следить, но saveHTML()
может добавить отсутствующие теги вокруг вашей структуры.