Как удалить кавычки в моей строке описания продукта? - PullRequest
1 голос
/ 28 мая 2019

Я использую 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 ]

1 голос
/ 28 мая 2019

случилось со мной, попробуйте использовать:

tep_output_string($product_info['products_description']))

" становится &quot;

0 голосов
/ 28 мая 2019

Мы можем попробовать использовать 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-теги, то решение, которое я дал выше, может оказаться жизнеспособным.

...