Browse Source

move xpath query to parent helper class

pull/83/head
Aaron Parecki 5 years ago
parent
commit
a0f80593e9
No known key found for this signature in database GPG Key ID: 276C2817346D6056
2 changed files with 32 additions and 27 deletions
  1. +31
    -0
      lib/XRay/Formats/Format.php
  2. +1
    -27
      lib/XRay/Formats/HTML.php

+ 31
- 0
lib/XRay/Formats/Format.php View File

@ -104,5 +104,36 @@ abstract class Format implements iFormat {
return trim(str_replace(['<br>','<br />'],"\n", $sanitized)); return trim(str_replace(['<br>','<br />'],"\n", $sanitized));
} }
protected static function findLinksInDocument(&$xpath, $target) {
$found = [];
self::xPathFindNodeWithAttribute($xpath, 'a', 'href', function($u) use($target, &$found){
if($u == $target) {
$found[$u] = null;
}
});
self::xPathFindNodeWithAttribute($xpath, 'img', 'src', function($u) use($target, &$found){
if($u == $target) {
$found[$u] = null;
}
});
self::xPathFindNodeWithAttribute($xpath, 'video', 'src', function($u) use($target, &$found){
if($u == $target) {
$found[$u] = null;
}
});
self::xPathFindNodeWithAttribute($xpath, 'audio', 'src', function($u) use($target, &$found){
if($u == $target) {
$found[$u] = null;
}
});
return $found;
}
public static function xPathFindNodeWithAttribute($xpath, $node, $attr, $callback) {
foreach($xpath->query('//'.$node.'[@'.$attr.']') as $el) {
$v = $el->getAttribute($attr);
$callback($v);
}
}
} }

+ 1
- 27
lib/XRay/Formats/HTML.php View File

@ -47,26 +47,7 @@ class HTML extends Format {
$found = []; $found = [];
if($target) { if($target) {
self::xPathFindNodeWithAttribute($xpath, 'a', 'href', function($u) use($target, &$found){
if($u == $target) {
$found[$u] = null;
}
});
self::xPathFindNodeWithAttribute($xpath, 'img', 'src', function($u) use($target, &$found){
if($u == $target) {
$found[$u] = null;
}
});
self::xPathFindNodeWithAttribute($xpath, 'video', 'src', function($u) use($target, &$found){
if($u == $target) {
$found[$u] = null;
}
});
self::xPathFindNodeWithAttribute($xpath, 'audio', 'src', function($u) use($target, &$found){
if($u == $target) {
$found[$u] = null;
}
});
$found = self::findLinksInDocument($xpath, $target);
} }
if(!$found) { if(!$found) {
@ -178,13 +159,6 @@ class HTML extends Format {
return mb_convert_encoding($input, 'HTML-ENTITIES', mb_detect_encoding($input)); return mb_convert_encoding($input, 'HTML-ENTITIES', mb_detect_encoding($input));
} }
private static function xPathFindNodeWithAttribute($xpath, $node, $attr, $callback) {
foreach($xpath->query('//'.$node.'[@'.$attr.']') as $el) {
$v = $el->getAttribute($attr);
$callback($v);
}
}
private static function xPathGetElementById($xpath, $id) { private static function xPathGetElementById($xpath, $id) {
$element = null; $element = null;
foreach($xpath->query("//*[@id='$id']") as $el) { foreach($xpath->query("//*[@id='$id']") as $el) {

Loading…
Cancel
Save