rewrite_urls implementation based on DOMDocument (refs #413)
This commit is contained in:
parent
b8379e6979
commit
73c32678ae
|
@ -4849,7 +4849,7 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function rewrite_urls($line) {
|
/* function rewrite_urls($line) {
|
||||||
global $url_regex;
|
global $url_regex;
|
||||||
|
|
||||||
$urls = null;
|
$urls = null;
|
||||||
|
@ -4858,6 +4858,48 @@
|
||||||
"<a target=\"_blank\" href=\"\\1\">\\1</a>", $line);
|
"<a target=\"_blank\" href=\"\\1\">\\1</a>", $line);
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
|
} */
|
||||||
|
|
||||||
|
function rewrite_urls($html) {
|
||||||
|
libxml_use_internal_errors(true);
|
||||||
|
|
||||||
|
$charset_hack = '<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||||
|
</head>';
|
||||||
|
|
||||||
|
$doc = new DOMDocument();
|
||||||
|
$doc->loadHTML($charset_hack . $html);
|
||||||
|
$xpath = new DOMXPath($doc);
|
||||||
|
|
||||||
|
$entries = $xpath->query('//*/text()');
|
||||||
|
|
||||||
|
foreach ($entries as $entry) {
|
||||||
|
if (strstr($entry->wholeText, "://") !== false) {
|
||||||
|
$text = preg_replace("/((?<!=.)((http|https|ftp)+):\/\/[^ ,!]+)/i",
|
||||||
|
"<a target=\"_blank\" href=\"\\1\">\\1</a>", $entry->wholeText);
|
||||||
|
|
||||||
|
if ($text != $entry->wholeText) {
|
||||||
|
$cdoc = new DOMDocument();
|
||||||
|
$cdoc->loadHTML($charset_hack . $text);
|
||||||
|
|
||||||
|
|
||||||
|
foreach ($cdoc->childNodes as $cnode) {
|
||||||
|
$cnode = $doc->importNode($cnode, true);
|
||||||
|
|
||||||
|
if ($cnode) {
|
||||||
|
$entry->parentNode->insertBefore($cnode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$entry->parentNode->removeChild($entry);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$node = $doc->getElementsByTagName('body')->item(0);
|
||||||
|
|
||||||
|
return $doc->saveXML($node);
|
||||||
}
|
}
|
||||||
|
|
||||||
function filter_to_sql($filter) {
|
function filter_to_sql($filter) {
|
||||||
|
|
Loading…
Reference in New Issue