Амперсанды в текстовых полях крутятся с отображением полевых данных - PullRequest
1 голос
/ 24 января 2012

У меня есть система управления клиентами, которую я запрограммировал в php и mysql.Компания использует его для регистрации своих данных о клиентах для маркетинга и заказов.В моей форме есть различные поля, одно из которых - Business Name.

Поля импортируются в адрес электронной почты для отправки клиентам цитаты и т. Д. Содержимое поля извлекается из базы данных и сохраняется в различных строках.,Например, название компании хранится в $name.

. Проблема, которую я обнаружил, заключается в том, что если компания вводит название компании, такое как Joe Blogs & Sons, то, что заканчивается импортом в систему электронной почты, составляет Joe Blogs, и этоэто, что-нибудь после того, как амперсанд отрезан, включая амперсанд.Если они используют Joe Blogs and Sons, это нормально работает, и когда электронное письмо выходит, оно говорит: Dear, Joe Blogs and Sons, но если кто-то вводит &, оно просто заканчивается как Dear, Joe Blogs.

Я был бы прав, говоря что-токак s tr_replace или preg_replace - это путь с этим или способ избежать &?.

Ответы [ 3 ]

2 голосов
/ 24 января 2012

Используйте либо htmlentities(), либо htmlspecialchars() для кодирования специальных сущностей HTML для внедрения в контекст HTML. Обратите внимание, что этих функций недостаточно для любого другого контекста. Пример:

Хорошо:

<p><?php echo htmlspecialchars($foo); ?></p>

Bad:

<a href="<?php echo htmlspecialchars($bar); ?>">Click me!</a>
0 голосов
/ 24 января 2012

Это зависит от того, что вы подразумеваете под "импортированным в адрес электронной почты".

Я полагаю, вам просто нужно преобразовать & в &amp; - вероятно, лучше всего просто использовать htmlentities вокруг каждой переменной (при условии, что они не содержат HTML, который требует проанализировано) как часть вашего процесса "очистки строки".

0 голосов
/ 24 января 2012

попробуйте преобразовать & в &amp;.Для этого есть различные php-функции. Выберите ту, которая подходит вам

...