|
|
|
| Текст поступает из формы. Подскажите пожалуйста, как можно заменить первый символ " на «, второй " на » и т. д.? Заменить требуется все символы в тексте. | |
|
|
|
|
|
|
|
для: name
(21.07.2006 в 20:27)
| | Кавычки всегда согласованы и вложенные случаи не предусмотрены? | |
|
|
|
|
|
|
|
для: cheops
(21.07.2006 в 21:23)
| | А вы не могли бы привести оба случая. | |
|
|
|
|
|
|
|
для: name
(22.07.2006 в 03:00)
| | Со вложенными скобками скорее всего ничего не получится, так как скобки одинаковые, посмотите следующий скрипт
<?php
$text = "Текст поступает из формы, например, так \"текст в кавычках\". Нужно заменить.";
$pattern = "|\"([^\"]+)\"|is";
$text = preg_replace($pattern, "«\\1»", $text);
echo $text;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(22.07.2006 в 11:11)
| | Спасибо. | |
|
|
|
|
|
|
|
для: name
(22.07.2006 в 13:46)
| | Хороший и короткий код, но обнаружил проблему:
если до или после этого "перекавычивания" добавить:
$text== htmlspecialchars($text);
то ничего не получается и вместо кавычек выдаёт знаки «\\1»
Получается что надо выбирать: либо безопасность текста, либо красивые кавычки.
Может как-то можно обхитрить этот htmlspecialchars, чтобы всё выводило правильно?? | |
|
|
|
|
|
|
|
для: Владимир22
(28.07.2006 в 03:29)
| | Нужно просто сообщить функции htmlspecialchars() чтобы она не заменяла кавычки при помощи второго параметра функции
<?php
$text = "Текст поступает из формы, например, так \"текст в кавычках\". Нужно заменить.";
$text = htmlspecialchars($text, ENT_NOQUOTES);
$pattern = "|\"([^\"]+)\"|is";
$text = preg_replace($pattern, "«\\1»", $text);
echo $text;
?>
|
| |
|
|
|