-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.php
42 lines (32 loc) · 1.49 KB
/
main.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
/**
* Прогоняет входной HTML через веб-сервис Типографа.
*
* IMPORTANT
* Некорректно работает в случаях, когда предложения разрываются тэгами (частые случаи - <a>, <b>, <i> и др.).
* Например, "нажмите на <a href='#'>ссылку</a>" будет преобразовано в "нажмите на<a href='#'>ссылку</a>".
*/
$inputFile = "./sample.html";
$outputFile = "./out.html";
//-------------------------------
$htmlIn = file_get_contents($inputFile);
$htmlIn = "<div>$htmlIn</div>";
$doc = new DOMDocument();
$doc->loadHTML("<?xml encoding=\"utf-8\" ?>" . $htmlIn, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($doc);
$nodeList = $xpath->query("//text()[string-length(normalize-space(.))>0]");
require "remotetypograf.php";
$remoteTypograf = new RemoteTypograf();
$remoteTypograf->htmlEntities();
$remoteTypograf->br (false);
$remoteTypograf->p (false);
$remoteTypograf->nobr (3);
$remoteTypograf->quotA ('laquo raquo');
$remoteTypograf->quotB ('bdquo ldquo');
for ($i = 0; $i < $nodeList->count(); $i++) {
$item = $nodeList->item($i);
$item->textContent = $remoteTypograf->processText ($item->textContent);
}
$htmlOut = $doc->saveXML($doc->documentElement);
$htmlOut = html_entity_decode(trim(mb_substr($htmlOut, mb_strlen("<div>"), mb_strlen($htmlOut) - mb_strlen("<div></div>") - 1)));
file_put_contents($outputFile, $htmlOut);