0

我正在尝试在我正在使用 Opencart 的网站上为 700 多种产品添加元描述,我希望我不必手动执行此操作。每个产品都已经有了产品描述,我遇到了一个在一定程度上实现这一点的脚本,但我需要稍微调整一下。不在 PHP 大师附近,我希望 SO 上的人可以提供帮助。

这是代码:

// Registry
$registry = new Registry();

// Loader
$loader = new Loader($registry);
$registry->set('load', $loader);

// Config
$config = new Config();
$registry->set('config', $config);

function get_meta_desc($string){
    return substr(strip_tags($string), 0, 255); 
}

// Database 
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);

$query = $db->query("SELECT * FROM `" . DB_PREFIX . "product_description` Order By product_id ASC");

foreach ($query->rows as $row){
    $query2 = $db->query("UPDATE `" . DB_PREFIX . "product_description` SET meta_description = '". mysql_real_escape_string(get_meta_desc($row['description'])) ."' WHERE product_id = '".$row['product_id']."'");
}

echo 'done';
@unlink('runonce.php');

但问题是它没有去除 HTML 标签。我不太了解PHP,但在我看来它应该可以工作,我不知道为什么不这样做。

我希望添加到脚本中的另一件事是检查元描述中是否已有内容,如果有,则不做任何事情并跳到下一个。

谢谢,evu。

4

1 回答 1

1

描述通常在放入数据库之前进行 html 编码。

所以你的功能应该是:

function get_meta_desc($string){
    return substr(strip_tags(html_entity_decode($string)), 0, 255); 
}

要检查元描述是否存在,您需要检查 meta_description 列:

function get_meta_desc($string, $meta){
    if(!empty($meta))
        return $meta;

    return substr(strip_tags(html_entity_decode($string)), 0, 255); 
}

get_meta_desc($row['description'], $row['meta_description']);
于 2012-10-10T03:51:18.700 回答