Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание типографа для utf 8 
V
    Опции темы
americanets
Дата 19.8.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



хочу сделать типограф на PHP 4 чтоб мог работать и в utf 8 
пока сделал небольшую функцию, но это не совсем то 

Код

<?php
setlocale(LC_ALL, 'ru_RU.UTF-8', 'rus');
function typo($str){
$zamena = array();
$zamena = array(
        '&gt;&gt;' => '&raquo;',
        '&lt;&lt;' => '&laquo;',
        '1/2' => '&frac12;',
        '1/4' => '&frac14;',
        '3/4' => '&frac34;',
        '...'  => '&hellip;',
        '&lt;--' => '&larr;',
        '--&gt;' => '&rarr;',
        '+-'=>'&plusmn;',
        '(c)'=>'&copy;',
        '--'=>'&mdash;',
        '(TM)'=>'&trade;',
        );
    $str = strtr($str, $zamena);
    return $str;
}
?>


хотя кое что заменяет нормально, как можно реализовать чтоб функция могла определить когда ставить кавычки (для русского языка) а когда "лапки" для английского и соответственно открывала их и закрывала ? 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Glip
Дата 19.8.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 1
Всего: 18



classRussianTypograph
может быть тут найдёте что-то полезное.


--------------------
user posted image
PM MAIL   Вверх
americanets
Дата 19.8.2007, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



он вроде на 5 посмотрю как там


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
americanets
Дата 19.8.2007, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



c одиночным английским словом справляется нормально если не одно слово то парит, берет первую и последнии кавычку, с русским текстом вообще труба, только первую кавычку меняет и тоже только когда одно слово, в тексте не может 

Код

$text = preg_replace( "/(^|\s|\201|\200|>)\&quot;([0-9A-Za-z\'\!\s\.\?\,\-\&\;\:\_\200\201]+(\&quot;|”))/i", "\\1“\\2", $text );
$text = preg_replace( "/(\&\#147\;([A-Za-z0-9\'\!\s\.\?\,\-\&\;\:\200\201\_]*).*[A-Za-z0-9][\200\201\?\.\!\,]*)\&quot;/i", "\\1”", $text);

$text = preg_replace( "/\"\"/i", "&quot;&quot;", $text );
$text = preg_replace( "/(^|\s|\201|\200|>|\()\&quot;((\201|\200)*[~0-9ёЁA-Za-zА-Яа-я\-:\/\.])/i", "\\1&laquo;\\2", $text );
$text = preg_replace( "/(^|\s|\201|\200|>|\()\&quot;((\201|\200|\/&nbsp;|\/|\!)*[~0-9ёЁA-Za-zА-Яа-я\-:\/\.])/i", "\\1&laquo;\\2", $text );

$text = preg_replace( "/(\&laquo\;([^\"]*)[ёЁA-Za-zА-Яа-я0-9\.\-:\/](\201|\200)*)\&quot;/i", "\\1&raquo;", $text );
$text = preg_replace( "/(\&laquo\;([^\"]*)[ёЁA-Za-zА-Яа-я0-9\.\-:\/](\201|\200)*\?(\201|\200)*)\&quot;/i", "\\1&raquo;", $text );
$text = preg_replace( "/(\&laquo\;([^\"]*)[ёЁA-Za-zА-Яа-я0-9\.\-:\/](\201|\200|\/|\!)*)\&quot;/i", "\\1&raquo;", $text );



--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
SamDark
Дата 20.8.2007, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 4
Всего: 38



americanets, 
Какие-то очень длинные регулярки... может упростить?

p.s. вот ещё можно глянуть типограф, который я потихоньку дорабатываю:
http://rmcreative.ru/article/programming/typograph/


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
GiV
Дата 20.8.2007, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 2
Всего: 9



На сколько помню для работы PCRE добавлять модификатор /u
Либо отказаться от PCRE и использовать POSIX RegEx с multibyte (http://ru2.php.net/manual/ru/ref.mbstring.php)

Но до использования mb_ereg* громко сказать:
Код

mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');

PM MAIL WWW ICQ   Вверх
americanets
Дата 20.8.2007, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



спасибо  вроде разобрался
Код

$m = preg_replace( "/\"\"/i", "&quot;&quot;", $m );
      $m = preg_replace( "/\"\.\"/i", "&quot;.&quot;", $m );
      $_data = "\"\"";
      while ($_data != $m)
      {  
        $_data = $m;
        $m = preg_replace( "/(^|\s|\201|\200|>)\&quot;([0-9A-Za-z\'\!\s\.\?\,\-\&\;\:\_\200\201]+(\&quot;|”))/i", "\\1“\\2", $m);
$m = preg_replace( "/(\&\#147\;([A-Za-z0-9\'\!\s\.\?\,\-\&\;\:\200\201\_]*).*[A-Za-z0-9][\200\201\?\.\!\,]*)\&quot;/i", "\\1”", $m);
      }



--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0460 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.