Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Класс для работы с typograf.ru
- * @author Шиканов Юрий <dizballanze@gmail.com>
- * @link http://dizballanze.com
- */
- class Typograf {
- /**
- * Теги
- * Атрибут delete — значения: 0 — не удалять; 1 — удалять до типографирования; 2 — удалять после типографирования.
- * @var int
- */
- public $tags_delete = 0;
- /**
- * Теги
- * Значения: 0 — не расставлять; 1 — расставлять
- * @var int
- */
- public $tags = 1;
- /**
- * Параграфы
- * Атрибут delete — значения: 0 — не удалять; 1 — удалять до типографирования; 2 — удалять после типографирования.
- * @var int
- */
- public $paragraph_insert = 1;
- /**
- * Внешний вид обрамления абзаца
- * Начальный тег
- * @var string
- */
- public $paragraph_start = '<p>';
- /**
- * Внешний вид обрамления абзаца
- * Конечный тег
- * @var string
- */
- public $paragraph_end = '</p>';
- /**
- * Перевод строки
- * Атрибут insert: 1 — ставить; 0 — не ставить.
- * @var int
- */
- public $newline_insert = 1;
- /**
- * Перевод строки
- * Теги перевода строки
- * @var string
- */
- public $newline = '<br />';
- /**
- * Переводы строк <p> </p>
- * @var int
- */
- public $cms_new_line_valid = 0;
- /**
- * dos-text — удаляет одинарные переводы строк и переносы.
- * Атрибут delete: 0 — не удалять; 1 — удалять.
- * @var int
- */
- public $dos_text_delete = 0;
- /**
- * nowraped — неразрывные конструкции.
- * Атрибут insert: 1 — ставить; 0 — не ставить.
- * @var int
- */
- public $nowraped_insert = 1;
- /**
- * nowraped — неразрывные конструкции.
- * Атрибут nonbsp: 0 — не использовать неразрывные конструкции вместо (неразрывного пробела); 1 — наоборот.
- * @var int
- */
- public $nowraped_nobsp = 0;
- /**
- * nowraped — неразрывные конструкции.
- * Атрибут length: не объединять в неразрывные конструкции слова, написанные через дефис, с общей длинной больше N знаков. Если 0 то не используется
- * @var int
- */
- public $nowraped_length = 0;
- /**
- * nowraped — неразрывные конструкции.
- * Начальный тег
- * @var string
- */
- public $nowraped_start = '<nobr>';
- /**
- * nowraped — неразрывные конструкции.
- * Конечный тег
- * @var string
- */
- public $nowraped_end = '</nobr>';
- /**
- * hanging-punct — висячая пунктуация.
- * Атрибут insert: 1 — использовать; 0 — не использовать.
- * @var int
- */
- public $hanging_punct_insert = 0;
- /**
- * hanging-line — висячие строки.
- * Атрибут delete: 1 — удалять; 0 — не удалять.
- * @var int
- */
- public $hanging_line_delete = 0;
- /**
- * minus-sign — указывает какой символ использовать вместо знака минус: — – или −
- * @var string
- */
- public $minus_sign = '–';
- /**
- * Переносы.
- * Атрибут insert
- * @var int
- */
- public $hyphen_insert = 0;
- /**
- * Переносы.
- * Атрибут length
- * @var int
- */
- public $hyphen_length = 0;
- /**
- * acronym — выделять сокращения.
- * Атрибут insert: 1 — выделять; 0 — не выделять
- * @var int
- */
- public $acronym_insert = 1;
- /**
- * symbols — как выводить типографированный текст.
- * Атрибут type: 0 — буквенными символами ( ); 1 — числовыми ( ).
- * @var type
- */
- public $symbols_type = 0;
- /**
- * link — добавляет дополнительные атрибуты к ссылкам
- * Атрибут target
- * @var string
- */
- public $link_target = '';
- /**
- * link — добавляет дополнительные атрибуты к ссылкам
- * Атрибут class
- * @var string
- */
- public $link_class = '';
- private $_xml ='<?xml version="1.0" encoding="windows-1251" ?>
- <preferences>
- <tags delete="{tags_delete}">{tags}</tags>
- <paragraph insert="{paragraph_insert}">
- <start><![CDATA[{paragraph_start}]]></start>
- <end><![CDATA[{paragraph_end}]]></end>
- </paragraph>
- <newline insert="{newline_insert}"><![CDATA[{newline}]]></newline>
- <cmsNewLine valid="{cms_new_line_valid}" />
- <dos-text delete="{dos_text_delete}" />
- <nowraped insert="{nowraped_insert}" nonbsp="{nowraped_nobsp}" length="{nowraped_length}">
- <start><![CDATA[{nowraped_start}]]></start>
- <end><![CDATA[{nowraped_end}]]></end>
- </nowraped>
- <hanging-punct insert="{hanging_punct_insert}" />
- <hanging-line delete="{hanging_line_delete}" />
- <minus-sign><![CDATA[{minus_sign}]]></minus-sign>
- <hyphen insert="{hyphen_insert}" length="{hyphen_length}" />
- <acronym insert="{acronym_insert}"></acronym>
- <symbols type="{symbols_type}" />
- <link target="{link_target}" class="{link_class}" />
- </preferences>';
- public function __construct() {
- }
- /**
- * Формирует XML
- * @return string
- */
- protected function burnXML(){
- $xml = $this->_xml;
- foreach ($this as $key=>$value){
- if ($key == '_xml')
- continue;
- $xml = str_replace('{' . $key . '}', $value, $xml);
- }
- return mb_convert_encoding($xml, 'CP1251', 'UTF-8');
- }
- /**
- * Осуществляет post-запрос
- * @param string $host
- * @param string $script
- * @param string $data
- * @return string
- */
- protected function post($host,$script,$data){
- $fp = fsockopen($host,80,$errno, $errstr, 30 );
- if ($fp) {
- fputs($fp, "POST $script HTTP/1.1\n");
- fputs($fp, "Host: $host\n");
- fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
- fputs($fp, "Content-length: " . strlen($data) . "\n");
- fputs($fp, "User-Agent: PHP Script\n");
- fputs($fp, "Connection: close\n\n");
- fputs($fp, $data);
- while(fgets($fp,2048) != "\r\n" && !feof($fp));
- $buf = '';
- while(!feof($fp)) $buf .= fread($fp,2048);
- fclose($fp);
- }
- else{
- return false;
- }
- return $buf;
- }
- /**
- * Типографировать текст
- * @param string $text
- * @param string $chr
- * @return string|bool
- */
- public function typograf($text, $chr = 'UTF-8'){
- $xml = $this->burnXML();
- return $this->post('www.typograf.ru', '/webservice/', 'text=' . urlencode($text) . '&xml=' . urlencode($xml) . '&chr=' . urlencode($chr));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement