Пример #1
0
 public function testStripXmlTag()
 {
     $data = file_get_contents('tests/fixtures/jeux-linux.fr.xml');
     $this->assertEquals('<rss', substr(Filter::stripXmlTag($data), 0, 4));
     $data = file_get_contents('tests/fixtures/ezrss.it');
     $this->assertEquals('<!DOC', substr(Filter::stripXmlTag($data), 0, 5));
     $data = file_get_contents('tests/fixtures/fulltextrss.xml');
     $this->assertEquals('<rss', substr(Filter::stripXmlTag($data), 0, 4));
     $data = file_get_contents('tests/fixtures/sametmax.xml');
     $this->assertEquals('<rss', substr(Filter::stripXmlTag($data), 0, 4));
     $data = file_get_contents('tests/fixtures/grotte_barbu.xml');
     $this->assertEquals('<rss', substr(Filter::stripXmlTag($data), 0, 4));
     $data = file_get_contents('tests/fixtures/ibash.ru.xml');
     $this->assertEquals('<rss', substr(Filter::stripXmlTag($data), 0, 4));
     $data = file_get_contents('tests/fixtures/pcinpact.xml');
     $this->assertEquals('<rss', substr(Filter::stripXmlTag($data), 0, 4));
     $data = file_get_contents('tests/fixtures/resorts.xml');
     $this->assertEquals('<rss', substr(Filter::stripXmlTag($data), 0, 4));
     $data = file_get_contents('tests/fixtures/rue89.xml');
     $this->assertEquals('<rss', substr(Filter::stripXmlTag($data), 0, 4));
     $data = file_get_contents('tests/fixtures/cercle.psy.xml');
     $this->assertEquals('<rss', substr(Filter::stripXmlTag($data), 0, 4));
     $data = file_get_contents('tests/fixtures/lagrange.xml');
     $this->assertEquals('<feed', substr(Filter::stripXmlTag($data), 0, 5));
     $data = file_get_contents('tests/fixtures/atom.xml');
     $this->assertEquals('<feed', substr(trim(Filter::stripXmlTag($data)), 0, 5));
     $data = file_get_contents('tests/fixtures/atomsample.xml');
     $this->assertEquals('<feed', substr(trim(Filter::stripXmlTag($data)), 0, 5));
     $data = file_get_contents('tests/fixtures/planete-jquery.xml');
     $this->assertEquals('<rdf:RDF', trim(substr(trim(Filter::stripXmlTag($data)), 0, 8)));
 }
Пример #2
0
 /**
  * Get the first XML tag
  *
  * @access public
  * @param  string  $data  Feed content
  * @return string
  */
 public function getFirstTag($data)
 {
     // Strip HTML comments (max of 5,000 characters long to prevent crashing)
     $data = preg_replace('/<!--(.{0,5000}?)-->/Uis', '', $data);
     /* Strip Doctype:
      * Doctype needs to be within the first 100 characters. (Ideally the first!)
      * If it's not found by then, we need to stop looking to prevent PREG
      * from reaching max backtrack depth and crashing.
      */
     $data = preg_replace('/^.{0,100}<!DOCTYPE([^>]*)>/Uis', '', $data);
     // Strip <?xml version....
     $data = Filter::stripXmlTag($data);
     // Find the first tag
     $open_tag = strpos($data, '<');
     $close_tag = strpos($data, '>');
     return substr($data, $open_tag, $close_tag);
 }