euromark 11 years ago
parent
commit
7223d2dc84
3 changed files with 61 additions and 1 deletions
  1. 2 1
      composer.json
  2. 31 0
      src/HtmlDom/HtmlDom.php
  3. 28 0
      tests/TestCase/HtmlDom/HtmlDomTest.php

+ 2 - 1
composer.json

@@ -15,7 +15,8 @@
 	"require":{
 		"php": ">=5.4",
 		"cakephp/plugin-installer": "*",
-		"cakephp/cakephp": "3.0.*-dev"
+		"cakephp/cakephp": "3.0.*-dev",
+		"yangqi/htmldom": "dev-master"
 	},
 	"autoload": {
 		"psr-4": {

+ 31 - 0
src/HtmlDom/HtmlDom.php

@@ -0,0 +1,31 @@
+<?php
+namespace Tools\HtmlDom;
+
+use Yangqi\Htmldom\Htmldom as BaseHtmlDom;
+
+/**
+ * A wrapper class to parse HTML DOM including traversing, manipulation etc.
+ *
+ * An alternative would PhpQueryLib be for example.
+ *
+ * @link http://simplehtmldom.sourceforge.net/
+ */
+class HtmlDom extends BaseHtmlDom {
+
+	/**
+	 * @param url or path to file content
+	 * @return object Dom
+	 */
+	public static function domFromFile($url) {
+		return static::file_get_html($url);
+	}
+
+	/**
+	 * @param string $content
+	 * @return object Dom
+	 */
+	public static function domFromString($str, $lowercase = true) {
+		return static::str_get_html($str, $lowercase);
+	}
+
+}

+ 28 - 0
tests/TestCase/HtmlDom/HtmlDomTest.php

@@ -0,0 +1,28 @@
+<?php
+
+namespace Tools\TestCase\HtmlDom;
+
+use Tools\HtmlDom\HtmlDom;
+use Cake\TestSuite\TestCase;
+use Cake\Core\Configure;
+
+class HtmlDomTest extends TestCase {
+
+	public $HtmlDom = null;
+
+	public function setUp() {
+		parent::setUp();
+	}
+
+	/**
+	 * HtmlDom test
+	 *
+	 * @return void
+	 */
+	public function testBasics() {
+		$html = new HtmlDom('<div id="hello">Hello</div><div id="world">World</div>');
+		$result = $html->find('div', 1)->innertext;
+		$this->assertSame('World', $result);
+	}
+
+}