Jump to content

Удаление спецсимволов в annotation из yandex.php


Go to solution Solved by Kors,

Recommended Posts

Здравствуйте. 

 

Подскажите пожалуйста, каким образом автоматически отфильтровать спец символы   – ® и т.д 

 

из <description>".htmlspecialchars(strip_tags($p->annotation))."</description>

 

Спецсимволы присутствуют в описании к товару, но Яндекс-Маркет их не разрешает использовать.

 

На друпале как то так фильтруют.

($id == 'description' ? str_replace(' ', ' ', $v) : $v) 

 

 

Link to post
Share on other sites

Пока отфильтровал так: 

 

$p->annotation = preg_replace("/ /", " ", $p->annotation);
$p->annotation = preg_replace("/–/", " ", $p->annotation);
$p->annotation = preg_replace("/®/", " ", $p->annotation);

но, наверное это просто костыль

Link to post
Share on other sites
  • 4 months later...

Добрый день, правильно ли я понимаю, что вместо

 

<description>".htmlspecialchars(strip_tags($p->annotation))."</description>

 

необходимо в yandex.php прописать

 

<description>".htmlspecialchars(strip_tags($p->annotation = preg_replace("/&[#a-z0-9]+;/", " ", $p->annotation);))."</description>

Link to post
Share on other sites

Добрый день, правильно ли я понимаю, что вместо

 

<description>".htmlspecialchars(strip_tags($p->annotation))."</description>

 

необходимо в yandex.php прописать

 

<description>".htmlspecialchars(strip_tags($p->annotation = preg_replace("/&[#a-z0-9]+;/", " ", $p->annotation);))."</description>

Нет, где нибудь перед "print" у меня где то на 150 строке.

Link to post
Share on other sites
  • 5 years later...

Доброго дня!

Уважаемые специалисты, подскажите, пожалуйста, как избавиться от "&nbsp", который вываливается в тексте описания товара на яндекс маркете вместо пробела. Вышеописанный метод убирает эти кракозябры из описания на маркете, но пробел на его месте после этого отсутствует и на стыке предложений слова идут слитно. Соответственно вопрос - что в методе доработать и как добавить пробел вместо "&nbsp"?

Заранее благодарен, хорошего настроения!

Link to post
Share on other sites

 "&nbsp" - такого изначально быть НЕ должно, смысла это не имеет.

Часто встречается  "&nbsp;" - это осмысленно.

Если у Вас встречается именно "&nbsp",  то есть смысл поменять в текстах на "&nbsp;".

Иначе, если надо убирать в точности "&nbsp", то используйте прием типа

$p->annotation = preg_replace("/&[#a-z0-9]+/", " ", $p->annotation);

 

Link to post
Share on other sites
В 27.05.2022 в 21:30, phukortsin сказал:

 "&nbsp" - такого изначально быть НЕ должно, смысла это не имеет.

Часто встречается  "&nbsp;" - это осмысленно.

Если у Вас встречается именно "&nbsp",  то есть смысл поменять в текстах на "&nbsp;".

Иначе, если надо убирать в точности "&nbsp", то используйте прием типа





$p->annotation = preg_replace("/&[#a-z0-9]+/", " ", $p->annotation);

 

Доброго времени суток! Да, конечно, встречается, "&nbsp;", опечатался, точку с запятой не написал. "&nbsp" без ";" не было ни разу. Было необходимо убрать из выдачи в маркет именно "&nbsp;" (что я уже сделал по вышеописанному методу, все работает, &nbsp; исчезает из выдачи, (за это уже огромное спасибо)), но хотелось бы вместо него добавить пробел, поскольку "&nbsp;" у меня почему-то стоит вместо пробелов в описании товара в маркете и после удаления "&nbsp;" по методу который написал выше Kors, пробел между абзацами теряется. Затрудняюсь сказать откуда у меня появилось в текстах описания столько non-breaking space'ов, хотел бы их заменить просто пробелом. Конфуз, однако. Буду благодарен если подскажете!

?

Edited by apophis
Link to post
Share on other sites
2 часа назад, apophis сказал:

Доброго времени суток! Да, конечно, встречается, "&nbsp;", опечатался, точку с запятой не написал. "&nbsp" без ";" не было ни разу. Было необходимо убрать из выдачи в маркет именно "&nbsp;" (что я уже сделал по вышеописанному методу, все работает, &nbsp; исчезает из выдачи, (за это уже огромное спасибо)), но хотелось бы вместо него добавить пробел, поскольку "&nbsp;" у меня почему-то стоит вместо пробелов в описании товара в маркете и после удаления "&nbsp;" по методу который написал выше Kors, пробел между абзацами теряется. Затрудняюсь сказать откуда у меня появилось в текстах описания столько non-breaking space'ов, хотел бы их заменить просто пробелом. Конфуз, однако. Буду благодарен если подскажете!

?

функция постом выше как раз заменяет "&nbsp;" на пробел

Link to post
Share on other sites
В 27.05.2022 в 21:30, phukortsin сказал:
1 час назад, shooroop сказал:

функция постом выше как раз заменяет "&nbsp;" на пробел


$p->annotation = preg_replace("/&[#a-z0-9]+/", " ", $p->annotation);

 

Большущее спасибо, ушёл тестить! )

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...