code by Alan Dix, developed at Talis

Examples

Parse default Public Suffix list

$manageSLD = new ManageSLD();
$rules = $manageSLD->parseFile();

Parse named local file

$manageSLD = new ManageSLD();
$rules = $manageSLD->parseFile('myfile.txt');

Lookup domain in rule set

list( $sld, $label, $rest, $registerable, $pattern, $flags ) 
= $manageSLD->applyRules( 'www.alandix.com', $rules )
// returns ( 'com', 'alandix', 'www', 'alandix.com', 'com', 0 )

Parse to local storage

$manageSLD = new ManageSLD();
$manageSLD->parseToStore();
$count = $manageSLD->parseFile();

Parse to database storage

$store = new NosqliteRuleStoreSLD( $nosqlite );
$manageSLD = new ManageSLD($store);
$manageSLD->parseToStore();
$count = $manageSLD->parseFile();

Lookup domain from just read storage

// after using parseToStore();
list( $sld, $label, $rest, $registerable, $pattern, $flags )
= $manageSLD->lookup( 'www.cs.bham.ac.uk' )
// returns ( 'ac.uk', 'bham', 'www.cs', 'bham.ac.uk', 'ac.uk', 0 )

Lookup domain from database storage

// have previosuly parsed file, now on a subsequent web page
$store = new NosqliteRuleStoreSLD( $nosqlite ); // or other user defined store
$manageSLD = new ManageSLD($store);
list( $sld, $label, $rest, $registerable, $pattern, $flags )
= $manageSLD->lookup( 'www.example.com' )
// returns ( 'com', 'example', 'www', 'example.com', 'com', 8 )

Refresh cached store of rules depending on age

// assumes database store as been set as in previous example
define( 'CACHE_REFRESH_PERIOD', 3600 ); // refresh once an hour
$meta = $store->getMeta();
$now = time();
$usecache = ( $meta && ($now - $meta['timestamp']) > CACHE_REFRESH_PERIOD );
if ( ! $usecache ) {
$manageSLD->parseToStore();
$parseOK = $manageSLD->parseFile();
if ( $parseOK ) $store->save($manageSLD);
}