Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как обозначить пробел в php + ?
 
 автор: Владимир22   (18.06.2006 в 03:07)   письмо автору
 
 

Помогите с таким выраженнием. Суть его в том, чтобы менять обычные кавычки на русские.
Из-за того, что русские кавычки и левые, и правые, надо делать замену с пробелом. Но НИГДЕ не нашёл как обозначается пробел в php.
Вот код, но не работает:

$pic = "Фирма \"Панасоник\" представляет";
$pic = eregi_replace(" \""," «",$pic);
$pic = eregi_replace("\" ","» ",$pic);
echo "$pic";  

Надо, чтобы из "Панасоник" сделало «Панасоник»

И так не работает:
$pic = "Фирма \"Панасоник\" представляет";
$pic = eregi_replace("\s\"","\s«",$pic);
$pic = eregi_replace("\"\s","»\s",$pic);
echo "$pic";

   
 
 автор: Бог Зайцев   (18.06.2006 в 03:56)   письмо автору
 
   для: Владимир22   (18.06.2006 в 03:07)
 

просто ставим вот такую палочку "\" перед пробелом )
Получается

"\ "

%)

   
 
 автор: Владимир22   (18.06.2006 в 06:47)   письмо автору
 
   для: Бог Зайцев   (18.06.2006 в 03:56)
 


<?php
$pic 
"Фирма \"Панасоник\" представляет";
$pic eregi_replace("\ \"","\ «",$pic);
$pic eregi_replace("\"\ ","»\ ",$pic);
echo 
"$pic";
?>

Кавычки стали меняться, но теперь отображаются эти палочки:
Фирма\ «Панасоник»\ представляет ??? Как можно их убрать?

   
 
 автор: Бог Зайцев   (18.06.2006 в 06:57)   письмо автору
 
   для: Владимир22   (18.06.2006 в 06:47)
 

Убирай их первым делом из переменной %)

$pic=stripslashes($pic)

   
 
 автор: xexe   (18.06.2006 в 13:24)   письмо автору
 
   для: Бог Зайцев   (18.06.2006 в 06:57)
 


<?php 
$pic 
"Фирма \"Панасоник\" представляет"
$pic eregi_replace("\ \""," « ",$pic); 
$pic eregi_replace("\"\ "," » ",$pic); 
echo 
"$pic";
?>

   
 
 автор: Владимир22   (18.06.2006 в 15:03)   письмо автору
 
   для: xexe   (18.06.2006 в 13:24)
 

Небольшая корректировка - после правой кавычки » оказывается может идти не только пробел, но и знаки препинания (точка, запятая, двоеточие и ит.п.).
Как в этой части кода можно это решить? (Если вставить точку или \d"\w" - пишет ошибка).
$pic = eregi_replace("\"\ "," » ",$pic);

   
 
 автор: NFR   (18.06.2006 в 15:39)   письмо автору
 
   для: Владимир22   (18.06.2006 в 15:03)
 

вот так: (\.|\,|\:|\;)

   
 
 автор: Владимир22   (18.06.2006 в 16:30)   письмо автору
 
   для: NFR   (18.06.2006 в 15:39)
 

Всем спасибо.
Вот написал функцию замены неудобных для php кавычек на русские кавычки (литературный вариант). Короче не получается.


<?php
################# ЗАМЕНА КАВЫЧЕК НА РУССКИЙ ВАРИАНТ #################

function russian_kavishki ($data)   {
$data eregi_replace("\ \""," «",$data); //пробел и левая кавычка
$data eregi_replace("[(]\"","(«",$data); //левая откр.скобка и кавычка
$data eregi_replace("[-]\"","- «",$data); //дефис и левая кавычка
$data eregi_replace("[.]\"",". «",$data); //точка и левая кавычка
$data eregi_replace("[,]\"",", «",$data); //запятая и левая кавычка
$data eregi_replace("[:]\"",": «",$data); //двоеточие и левая кавычка
$data eregi_replace("[;]\"","; «",$data); //точка с зап. и левая кавычка
$data eregi_replace("[/]\"","/«",$data); //слеш и левая кавычка

////////////////////////////////////////////////////////////////////
$data eregi_replace("\"\ ","» ",$data);  //правая кавычка и пробел
$data eregi_replace("\"[.]","».",$data); //правая кавычка и точка
$data eregi_replace("\"[,]","»,",$data); //правая кавычка и запятая
$data eregi_replace("\"[:]","»:",$data); //правая кавычка и двоеточие
$data eregi_replace("\"[;]","»;",$data); //правая кавычка и точка с зап.
$data eregi_replace("\"[!]","»!",$data); //правая кавычка и воскл. знак
$data eregi_replace("\"[?]","»?",$data); //правая кавычка и вопр. знак
$data eregi_replace("\"[)]","»)",$data); //правая кавычка и закр. скобка
$data eregi_replace("\"[-]","» -",$data); //правая кавычка и дефис
$data eregi_replace("\"[/]","»/",$data); //правая кавычка и слеш
}
##################################
$pic "Пример замены \"неудобных кавычек\" на правильные русские кавычки";
russian_kavishki (&$pic);
echo 
"$pic";
?>

   
 
 автор: Бог Зайцев   (18.06.2006 в 17:45)   письмо автору
 
   для: Владимир22   (18.06.2006 в 16:30)
 

Как-то громоздко получилось )
Сократил немношко ))
<?php 
function russian_kavishki ($data)   { 
$data=stripslashes($data);
$data preg_replace('/(^|[\s\(\[\-\.\,\:\;\/])"(\S)/''$1&laquo;$2'$data);  // Я не знаю, в каком страшном сне лингвиста Вы услышали информацию о том, что перед кавычками можно ставить что-то кроме открывающих скобочек. Для особо грамотных добавил все варианты из Вашего списка. 
$data eregi_replace("\"","»",$data);   // Мне что-то подсказало, что если все открывающие кавычки уже заменили, значит кроме как закрывающим, больше оставаться некому, т.к. других вроде не бывает %)


$pic "Пример замены: \"Неудобных кавычек\" на правильные русские кавычки"
russian_kavishki (&$pic); 
echo 
"$pic"

?>

   
 
 автор: Владимир22   (18.06.2006 в 19:54)   письмо автору
 
   для: Бог Зайцев   (18.06.2006 в 17:45)
 

Некоторые символы перед кавычками обозначены для того, чтобы "окавычивать" наверняка, если кто-то забыл поставить пробел после знаков препинания. В практике текстов такие случаи встречаются довольно часто, пример:
объектыБронетёмкин Поносец» и «байкодром Космодур».

КРоме того перед скобками могут стоять теги (типа,<b><i>...).
По этой причине и пришлось пойти на увеличение кода.

   
 
 автор: Бог Зайцев   (18.06.2006 в 19:59)   письмо автору
 
   для: Владимир22   (18.06.2006 в 19:54)
 

Дык я сжал его немножко )) Функционал остался тот же )

   
 
 автор: Владимир22   (18.06.2006 в 20:01)   письмо автору
 
   для: Бог Зайцев   (18.06.2006 в 19:59)
 

Если сразу за правой скобкой идут любые знаки препинания - ставит левую кавычку!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования