2009-08-02 2 views
0

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

<?php 
     $content = $post->post_content; 
     preg_match_all('/src=\"https?:\/\/[\S\w]+\"/i', $content, $matches, PREG_SET_ORDER); 
     foreach($matches as $e) 
     echo '<img src="http://site/scripts/timthumb.php?'.$e[0].'&h=320&w=214&zc=1" title="" alt="">'; 
     { 
     } 
    ?> 

Хотя это вторя все, что мне нужно, это добавляет в середине тега, некоторые двойные кавычки, отсутствующие пути в изображении (те же двойные кавычки мне нужно обнаружить изображение):

<img src="http://site/scripts/timthumb.php?src="http://site/images/image.jpg"&h=320&w=214&zc=1" title="" alt=""> 

Так что мои вопросы:

  1. Как вы сделали бы, чтобы удалить эти двойные кавычки (в то время как они мне нужны в в первый момент, чтобы найти шаблон )?
  2. И как бы вы сделали вытащить только первое изображение в сообщении?

Большое спасибо за любой вклад

ответ

2

Во-первых, использовать круглые скобки, чтобы захватить только немного вам нужно, сам URL. Во-вторых, если вам нужно только первое изображение, а затем просто использовать preg_match, а не preg_match_all:

$content = $post->post_content; 
if (preg_match('/src=\"(https?:\/\/[\S\w]+)\"/i', $content, $match)) 
{ 
    echo '<img src="http://site/scripts/timthumb.php?'. 
     urlencode($match[1]).'&h=320&w=214&zc=1" title="" alt="">'; 
} 

Обратите внимание, как URL часть регулярного выражения помечается() - как это первое выражение в квадратных скобках, это будет элемент 1 массива $ match.

Я также urlencoded URL-адрес изображения, чтобы гарантировать, что что-либо в этом матче правильно закодировано для использования в URL-адресе.

+0

Paul: отлично! большое спасибо. Я использовал его без urlencode, потому что он давал мне знаки «%» - это моя конфигурация? Я работаю локально с WAMP. – Peanuts

+0

Знаки% - это urlencoding! Если вы их получите, это покажет, что у вас есть символы, которые необходимо закодировать! –

Смежные вопросы