views:

59

answers:

5

I would like to have a PHP function to check if a URL returns valid HTML or NOT, and returns true or false.

Something like:

if (validate_page("/somefile.html")) { echo "This page validated!!"; }

I found TWINE but it doesn't just give me true or false. Also I got an error running it on my system. http://twineproject.sourceforge.net/

I found this offline tool that looked promising. http://htmlhelp.com/tools/validator/offline/

Also I found this thread that talks about a gem, but it sounds problematic. http://stackoverflow.com/questions/1287952/how-do-i-validate-xhtml-with-nokogiri

Any thoughts or suggestions? Thanks!

A: 

You can use W3C's validator API. There's a PHP library available through PEAR (click here) which uses said API.

You can also install the validator on your local server (instructions here), though you might not have sufficient permissions to do so if you are using shared hosting.

NullUserException
A: 

xhtml hast to be valid xml - if you only want to check that, you could easily use simplexml, but if you also want to check for correct elements/attributes this won't help you (in that case, NullUserExceptions hint to W3C's validator API would be the best solution to choose).

oezi
+1  A: 

You could also try DOMDocument->validate() if you are using PHP 5 and if the document contains a DTD.

http://www.php.net/manual/en/domdocument.validate.php

Archimedix
A: 
libxml_use_internal_errors ( true );
$doc = new DOMDocument;
$doc -> loadHTMLFile ( $file ); // load the file you want validated
var_dump ( libxml_get_errors () );
stillstanding
Thanks for this code sample! I got this working, but it gave me a false positive on one of my test cases. Also it only works on static fules (not php templates). But good enough for now, thanks!
simpleguy
+1  A: 

Tidy?

Validate: http://us.php.net/manual/en/function.tidy-diagnose.php
Repair: http://us.php.net/manual/en/tidy.repairstring.php

Gipetto
this looks promising, I'll try it out!
simpleguy