PHP-код для получения второго изображения в блоге - PullRequest
1 голос
/ 02 мая 2011

Я использую следующий код для получения изображения из поста в блоге:

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)){ //Defines a default image
  $first_img = "/images/default.jpg";
 }
 return $first_img;
}

Теперь мне понадобится некоторая помощь для внесения незначительной модификации.Вот что я ищу: я хотел бы, чтобы код игнорировал первое изображение, захватил второе изображение, которое он нашел, и, если он не нашел второе изображение, использовал изображение по умолчанию (запасной вариант)изображение).

Ответы [ 2 ]

1 голос
/ 02 мая 2011

Я большой поклонник проекта QueryPath , который позволяет вам работать с документами HTML, как и с jQuery. Принимает на себя тяжелую работу из таких задач. Сделайте попытку и дайте мне знать, поможет ли это вам!

0 голосов
/ 02 мая 2011

Я второй ответ @David дал вам, но если вам просто нужно быстрое и грязное исправление, вы можете сделать это:

function catch_that_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $content = preg_replace('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', '', $post->post_content, 1);
  $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $content, $matches);
  $first_img = $matches [1] [0];

  if(empty($first_img)){ //Defines a default image
  $first_img = "/images/default.jpg";
 }
 return $first_img;
}

Хитрость здесь в том, чтобы использовать preg_replace()с аргументом $limit, равным 1, для удаления первого изображения.

...