我正在尝试在我正在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。
答案 0 :(得分: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']);