PHP:拉动图像并修改其输出

时间:2009-08-02 11:46:23

标签: php image resize

我想为我的图片使用调整大小脚本(Timthumb)。我试图从数据库中提取帖子中包含的第一个图像,并添加脚本的路径,以及一些额外的说明:

    <?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. 而且,你会怎么做 只拉出帖子中的第一张图片?
  3. 非常感谢任何输入

1 个答案:

答案 0 :(得分: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部分是如何用()标记的 - 因为这是第一个括号表达式,它将是$ match数组的元素1。

我还对图片网址进行了urlencoded,以确保该匹配中的所有内容都已正确编码,以便在网址中使用。