Избегая цитаты, и "и" - PullRequest
       12

Избегая цитаты, и "и"

0 голосов
/ 16 сентября 2011

Я стараюсь изо всех сил, чтобы решить это, и это сводит меня с ума, я надеюсь, что я могу использовать либо preg_replace или ereg_replace для этого.

В основном я выкладываю строку текста, который беретсяиз статьи в новостях я беру первые 100 символов, округленные до ближайшего конца слова, проблема возникает, если в строке из 100 символов появляется «или», а закрытие отсутствует или «», это приводит к тому, что мой код PHPпотерпеть поражение.Поэтому мне нужно написать какой-нибудь код замены, чтобы все "и" были заменены на \ "и \", чтобы они были экранированы и не влияли на мой PHP.


Update

Я не могу исправить что-либо, касающееся вставки базы данных, поскольку я имею дело с очень старым архивом данных, который не могу обработать и повторно ввести в базу данных, поэтому я застрял в том, что у меня там есть.

Вот код, который у меня есть:

$text = preg_replace('/\s+?(\S+)?$/', '',substr($text, 0, 100));

echo '<div style="color: #8197cd;" >'.$text.'...</div>';

Таким образом, это берет мой текст, сокращает его и помещает его в ближайшее слово.

Затем я пытаюсь сделать что-то вродеиз:

$text = preg_replace("\"","\"",$text);
$text = preg_replace("\'","\'",$text);

Но preg_replace не является моей сильной стороной, так что это совершенно неправильно!

Ответы [ 3 ]

1 голос
/ 16 сентября 2011

проблема возникает, если в строке из 100 символов появляется «или», а закрытие отсутствует »или«, это приводит к сбою моего кода PHP.

Вы пытаетесь исправить проблему, которой не должно быть в первую очередь - скорее всего, неэкранированный ввод в запросе MySQL. Вместо этого вам нужно исправить это (это также проблема безопасности).

Покажите код, который ломается, я уверен, что кто-то сможет указать, что нужно сделать.

0 голосов
/ 16 сентября 2011

Кажется, что-то отсутствует в вашем вопросе. Вам следует рассмотреть возможность размещения кода, в котором возникла проблема.

Наличие кавычек внутри переменной, которую вы выводите, не даст сбой. Единственное, что я могу себе представить, это вызвать ошибку, если бы вы использовали какую-то систему шаблонов или код, который брал строку и использовал ее для выполнения eval () где-то, но это было бы очень плохой системой.

Если вы вставляете строку в базу данных, вам необходимо экранировать эти символы, как упомянуто SiteSafeNL.

Если eval является источником проблемы, то htmlentities, которые он также предложил, решит ее.

Добавлено по последним дополнениям к вопросу

Пожалуйста, попробуйте это:

echo '<div style="color: #8197cd;" >'. htmlentities($text) . '...</div>';

И preg_replaces бесполезны, поэтому просто опустите этот код.

0 голосов
/ 16 сентября 2011

Вам не нужно что-то вроде mysql_real_escape_string или htmlentities ?

...