使用preg_replace_callback从MySQL查询中建立链接!请帮忙


Using preg_replace_callback to make links out of MySQL Query! Help Please

这是我目前用于代码的代码,它无法正常工作。

我试过理解文学,但它没有点击

<?php
$con = mysql_connect("localhost","----","----");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("----", $con);
$result = mysql_query("SELECT * FROM posts");
while($row = mysql_fetch_array($result))
  {
$str = 'post_content';
$str = preg_replace_callback('#(?:https?://'S+)|(?:www.'S+)|(?:'S+'.'S+)#', function($arr)
{
    if(strpos($arr[0], 'http://') !== 0)
    {
        $arr[0] = 'http://' . $arr[0];
    }
    $url = parse_url($arr[0]);
    // images
    if(preg_match('#'.(png|jpg|gif)$#', $url['path']))
    {
        return '<img src="'. $arr[0] . '" />';
    }
    // youtube
    if(in_array($url['host'], array('www.youtube.com', 'youtube.com'))
      && $url['path'] == '/watch'
      && isset($url['query']))
    {
        parse_str($url['query'], $query);
        return sprintf('<iframe class="embedded-video" src="http://www.youtube.com/embed/%s" allowfullscreen></iframe>', $query['v']);
    }
    //links
    return sprintf('<a href="%1$s">%1$s</a>', $arr[0]);
}, $str);
echo $str;
echo "<br />";
}
mysql_close($con);
?>

我知道问题出在 $str = 'post_content' 上;显然它只是在 mysql 中的每一行显示一行,只有 post_content。

我希望它做的是显示MySQL中行post_content中的所有值,并将链接显示为链接,将youtube视频显示为youtube视频和图像等,但它没有转换它。

谁能看到我错过了什么?如果你能解释一下它是如何呼唤的,我会非常爱你。

如果您有列post_content并想要获取它,则不要使用赋值$str = 'post_content';请使用:

 $str = $row['post_content'];