3v4l.org

run code in 300+ PHP versions simultaneously
<?php $scraper = new DOMScraper(); //example couldent think of a site with an example table $scraper->setSite('http://www.farsnews.com/economy/agriculture')->setSource(); //get only tables with id="some_table_id" or any attribute match eg class="somthing" echo '<div>'.$scraper->getInnerHTML('div','class=ctgnewsmainpane').'</div>'; /** * Generic DOM scapper using DOMDocument and cURL */ Class DOMScraper extends DOMDocument{ public $site; private $source; private $dom; function __construct(){ libxml_use_internal_errors(true); $this->preserveWhiteSpace = false; $this->strictErrorChecking = false; } function setSite($site){ $this->site = $site; return $this; } function setSource(){ if(empty($this->site))return 'Error: Missing $this->site, use setSite() first'; $this->source = $this->get_data($this->site); return $this; } function getInnerHTML($tag, $class=null, $nodeValue = false){ if(empty($this->site))return 'Error: Missing $this->source, use setSource() first'; $this->loadHTML($this->source); $tmp = $this->getElementsByTagName($tag); $ret = null; foreach ($tmp as $v){ if($class !== null){ $attr = explode('=',$class); if($v->getAttribute($attr[0])==$attr[1]){ if($nodeValue == true){ $ret .= trim($v->nodeValue); }else{ $ret .= $this->innerHTML($v); } } }else{ if($nodeValue == true){ $ret .= trim($v->nodeValue); }else{ $ret .= $this->innerHTML($v); } } } return $ret; } function innerHTML($dom){ $ret = ""; $nodes = $dom->childNodes; foreach($nodes as $v){ $tmp = new DOMDocument(); $tmp->appendChild($tmp->importNode($v, true)); $ret .= trim($tmp->saveHTML()); } return $ret; } function get_data($url){ if(function_exists('curl_init')){ $ch = curl_init(); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); curl_close($ch); return $data; }else{ return file_get_contents($url); } } } ?>
Output for git.master, git.master_jit, rfc.property-hooks
Warning: file_get_contents(): php_network_getaddresses: getaddrinfo for www.farsnews.com failed: System error in /in/ekWpF on line 84 Warning: file_get_contents(http://www.farsnews.com/economy/agriculture): Failed to open stream: php_network_getaddresses: getaddrinfo for www.farsnews.com failed: System error in /in/ekWpF on line 84 Fatal error: Uncaught ValueError: DOMDocument::loadHTML(): Argument #1 ($source) must not be empty in /in/ekWpF:38 Stack trace: #0 /in/ekWpF(38): DOMDocument->loadHTML('') #1 /in/ekWpF(8): DOMScraper->getInnerHTML('div', 'class=ctgnewsma...') #2 {main} thrown in /in/ekWpF on line 38
Process exited with code 255.

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
49.9 ms | 402 KiB | 8 Q