Re: Another parse problem
| From: | Robert Cummings | Date: | Mon, 14 Jun 2010 13:57:58 +0000 |
| Subject: | Re: Another parse problem | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-306131@lists.php.net to get a copy of this message | ||
tedd wrote:
At 2:18 PM +0100 6/14/10, Ashley Sheridan wrote:<?php function rip_domains( $text ) {On Mon, 2010-06-14 at 09:14 -0400, tedd wrote:Ash: Nope, just a text file containing whatever and domain-names. The only domain-name indicator would be the period followed by an approved TDL, such as .com, .net, or .org.Hi gang: Considering all the recent parsing, here's another problem to consider -- given any text, parse the domain-names out of it. You may limit the parsing to the most popular TDL's, such as .com, .net, and .org, but the finished result should be an array containing all the domain-names found in a text file. Cheers, tedd -- ------- <http://sperling.com>http://sperling.com <http://ancientstones.com>http://ancientstones.com <http://earthstones.com>http://earthstones.comI'm assuming it won't be anything as simple as assuming all the domains begin with the http:// prefix? :p Thanks, Ash
$domains = false;
$pattern =
'[^-[:alnum:]]*'
.'('
. '[-[:alnum:]][-.[:alnum:]]*'
. '\.(com|net|org)'
.')'
.'[^-_[:alnum:]]*';
if( preg_match_all( "#$pattern#", $text, $matches ) )
{
$domains = array();
foreach( $matches[1] as $domain )
{
$domains[$domain] = true;
}
$domains = array_keys( $domains );
}
return $domains;} ?> Naive implementation. I'm sure I've missed edge cases someplace. Cheers, Rob. -- E-Mail Disclaimer: Information contained in this message and any attached documents is considered confidential and legally protected. This message is intended solely for the addressee(s). Disclosure, copying, and distribution are prohibited unless authorized.