如何删除产品说明字符串中的引号?

时间:2019-05-28 10:38:10

标签: preg-replace

我正在网上商店使用OSCommerce,目前正在优化产品页面以获取丰富的摘要。 由于描述字段中的双引号,Google将我的某些Google索引页面标记为“失败”。

我正在使用一个现有的代码,该代码将剥离html编码并截断197个字符后的所有内容。

<?php echo substr(trim(preg_replace('/\s\s+/', ' ', strip_tags($product_info['products_description']))), 0, 197); ?>

我如何在该代码中包括引号的删除,以便使以下字符串:

<strong>This product is the perfect "fit"</strong>

成为:

This product is the perfect fit

2 个答案:

答案 0 :(得分:1)

发生了我,尝试使用:

tep_output_string($product_info['products_description']))

"变为&quot;

答案 1 :(得分:0)

我们可以在此处尝试使用preg_replace_callback

$input = "SOME TEXT HERE <strong>This product is the perfect \"fit\"</strong> SOME MORE TEXT HERE";
$output = preg_replace_callback(
    "/<([^>]+)>(.*?)<\/\\1>/",
    function($m) {
        return str_replace("\"", "", $m[2]);
    },
    $input);
echo $output;

此打印:

SOME TEXT HERE This product is the perfect fit SOME MORE TEXT HERE

使用的正则表达式模式执行以下操作:

<([^>]+)>  match an opening HTML tag, and capture the tag name
(.*?)      then match and capture the content inside the tag
<\/\\1>    finally match the same closing tag

然后,我们使用一个回调函数,该函数可以进行其他替换以去除所有双引号。

请注意,通常对HTML使用正则表达式是不好的做法。但是,如果您的文本仅具有单个级别/偶尔的HTML标签,那么我上面给出的解决方案可能是可行的。