jonny008 Posted August 3, 2016 Report Share Posted August 3, 2016 Здравствуйте. Подскажите пожалуйста, каким образом автоматически отфильтровать спец символы – ® и т.д из <description>".htmlspecialchars(strip_tags($p->annotation))."</description> Спецсимволы присутствуют в описании к товару, но Яндекс-Маркет их не разрешает использовать. На друпале как то так фильтруют. ($id == 'description' ? str_replace(' ', ' ', $v) : $v) Quote Link to post Share on other sites
jonny008 Posted August 3, 2016 Author Report Share Posted August 3, 2016 Пока отфильтровал так: $p->annotation = preg_replace("/ /", " ", $p->annotation); $p->annotation = preg_replace("/–/", " ", $p->annotation); $p->annotation = preg_replace("/®/", " ", $p->annotation); но, наверное это просто костыль Quote Link to post Share on other sites
Solution Kors Posted August 3, 2016 Solution Report Share Posted August 3, 2016 Более общим образом:$p->annotation = preg_replace("/&[#a-z0-9]+;/", " ", $p->annotation); Quote Link to post Share on other sites
jonny008 Posted August 3, 2016 Author Report Share Posted August 3, 2016 Более общим образом:$p->annotation = preg_replace("/&[#a-z0-9]+;/", " ", $p->annotation);Спасибо Kors, сработало. Quote Link to post Share on other sites
Sharfik Posted December 12, 2016 Report Share Posted December 12, 2016 Добрый день, правильно ли я понимаю, что вместо <description>".htmlspecialchars(strip_tags($p->annotation))."</description> необходимо в yandex.php прописать <description>".htmlspecialchars(strip_tags($p->annotation = preg_replace("/&[#a-z0-9]+;/", " ", $p->annotation);))."</description> Quote Link to post Share on other sites
jonny008 Posted December 12, 2016 Author Report Share Posted December 12, 2016 Добрый день, правильно ли я понимаю, что вместо <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 строке. Quote Link to post Share on other sites
Sharfik Posted December 12, 2016 Report Share Posted December 12, 2016 Спасибо jonny008 за разъяснение и kors за решение! Все работает! Quote Link to post Share on other sites
apophis Posted May 27 Report Share Posted May 27 Доброго дня! Уважаемые специалисты, подскажите, пожалуйста, как избавиться от " ", который вываливается в тексте описания товара на яндекс маркете вместо пробела. Вышеописанный метод убирает эти кракозябры из описания на маркете, но пробел на его месте после этого отсутствует и на стыке предложений слова идут слитно. Соответственно вопрос - что в методе доработать и как добавить пробел вместо " "? Заранее благодарен, хорошего настроения! Quote Link to post Share on other sites
phukortsin Posted May 27 Report Share Posted May 27 " " - такого изначально быть НЕ должно, смысла это не имеет. Часто встречается " " - это осмысленно. Если у Вас встречается именно " ", то есть смысл поменять в текстах на " ". Иначе, если надо убирать в точности " ", то используйте прием типа $p->annotation = preg_replace("/&[#a-z0-9]+/", " ", $p->annotation); Quote Link to post Share on other sites
apophis Posted May 29 Report Share Posted May 29 (edited) В 27.05.2022 в 21:30, phukortsin сказал: " " - такого изначально быть НЕ должно, смысла это не имеет. Часто встречается " " - это осмысленно. Если у Вас встречается именно " ", то есть смысл поменять в текстах на " ". Иначе, если надо убирать в точности " ", то используйте прием типа $p->annotation = preg_replace("/&[#a-z0-9]+/", " ", $p->annotation); Доброго времени суток! Да, конечно, встречается, " ", опечатался, точку с запятой не написал. " " без ";" не было ни разу. Было необходимо убрать из выдачи в маркет именно " " (что я уже сделал по вышеописанному методу, все работает, исчезает из выдачи, (за это уже огромное спасибо)), но хотелось бы вместо него добавить пробел, поскольку " " у меня почему-то стоит вместо пробелов в описании товара в маркете и после удаления " " по методу который написал выше Kors, пробел между абзацами теряется. Затрудняюсь сказать откуда у меня появилось в текстах описания столько non-breaking space'ов, хотел бы их заменить просто пробелом. Конфуз, однако. Буду благодарен если подскажете! Edited May 29 by apophis Quote Link to post Share on other sites
shooroop Posted May 29 Report Share Posted May 29 2 часа назад, apophis сказал: Доброго времени суток! Да, конечно, встречается, " ", опечатался, точку с запятой не написал. " " без ";" не было ни разу. Было необходимо убрать из выдачи в маркет именно " " (что я уже сделал по вышеописанному методу, все работает, исчезает из выдачи, (за это уже огромное спасибо)), но хотелось бы вместо него добавить пробел, поскольку " " у меня почему-то стоит вместо пробелов в описании товара в маркете и после удаления " " по методу который написал выше Kors, пробел между абзацами теряется. Затрудняюсь сказать откуда у меня появилось в текстах описания столько non-breaking space'ов, хотел бы их заменить просто пробелом. Конфуз, однако. Буду благодарен если подскажете! функция постом выше как раз заменяет " " на пробел Quote Link to post Share on other sites
apophis Posted May 30 Report Share Posted May 30 В 27.05.2022 в 21:30, phukortsin сказал: 1 час назад, shooroop сказал: функция постом выше как раз заменяет " " на пробел $p->annotation = preg_replace("/&[#a-z0-9]+/", " ", $p->annotation); Большущее спасибо, ушёл тестить! ) Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.