All pastes #816341 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-12-14 19:32 UTC
rendered paste body
<?php
  class parse {
    public $filename = null;
    public $content = null;
    function urls() {
      if (preg_match_all("/<a\s[^>]*href=(\"??)\/wiki([^\" >]*?)\\1[^>]*>(.*)<\/a>/siU", $this->content, $urls)) {
        return $urls[2];
        # $matches[2] = array of link addresses
        # $matches[3] = array of link text - including HTML code
      }
    }
    function words() {
      /**
        * Remove HTML tags, including invisible text such as style and
        * script code, and embedded objects.  Add line breaks around
        * block-level tags to prevent word joining after tag removal.
       */
      $this->content = preg_replace(
        array(
          // Remove invisible content
          '@<head[^>]*?>.*?</head>@siu',
          '@<style[^>]*?>.*?</style>@siu',
          '@<script[^>]*?.*?</script>@siu',
          '@<object[^>]*?.*?</object>@siu',
          '@<embed[^>]*?.*?</embed>@siu',
          '@<applet[^>]*?.*?</applet>@siu',
          '@<noframes[^>]*?.*?</noframes>@siu',
          '@<noscript[^>]*?.*?</noscript>@siu',
          '@<noembed[^>]*?.*?</noembed>@siu',
          // Add line breaks before and after blocks
          '@</?((address)|(blockquote)|(center)|(del))@iu',
          '@</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))@iu',
          '@</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))@iu',
          '@</?((table)|(th)|(td)|(caption))@iu',
          '@</?((form)|(button)|(fieldset)|(legend)|(input))@iu',
          '@</?((label)|(select)|(optgroup)|(option)|(textarea))@iu',
          '@</?((frameset)|(frame)|(iframe))@iu',
          '/\s\s+/'
        ),
        array(
          ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
          "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0",
          "\n\$0", "\n\$0", ' '
        ),
        strip_tags(html_entity_decode(trim(strtolower($this->content))))
      );
      preg_match_all("/\w+/", $this->content, $words);
      return $words[0];
    }
    function __construct($filename) {
      $this->filename = $filename;
      $this->content = file_get_contents($this->filename) or die('Could not access file: ' . $this->filename);

      print_r($this->urls());
      print_r($this->words());

      //while(1) {  }
    }
  }

  $parse = new parse('http://en.wikipedia.org/wiki/Main_Page');

?>