Re: Extract links from strings
| From: | Jim Lucas | Date: | Mon, 21 Sep 2009 23:20:06 +0000 |
| Subject: | Re: Extract links from strings | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-298249@lists.php.net to get a copy of this message | ||
Jim Lucas wrote:
> Jônatas Zechim wrote:
>> Hi there, i've the following strings:
>>
>> $string1 = 'Lorem ipsum dolor http://site.com sit
>> amet';
>> $string2 = 'Lorem ipsum dolor http://www.site.com/ sit
>> amet';
>> $string3 = 'Lorem ipsum dolor http://www.site.net sit
>> amet';
>>
>> How can I extract the URL from these strings?
>> They can be [http:// + url] or [www. + url].
>>
>> Zechim
>>
>>
>
> Something like this should work for you.
>
> <plaintext><?php
>
> $urls[] = 'Lorem ipsum dolor http://site.com sit
> amet';
> $urls[] = 'Lorem ipsum dolor https://www.site.com/ sit
> amet';
> $urls[] = 'Lorem ipsum dolor www.site1.net sit amet';
> $urls[] = 'Lorem ipsum dolor www site2.net sit amet';
>
> foreach ( $urls AS $url ) {
> if ( preg_match('%((https?://|www\.)[^\s]+)%', $url, $m) ) {
> print_r($m);
> }
> }
>
> ?>
>
Actually, try this. It seems to work a little better.
<plaintext><?php
$urls[] = 'Lorem ipsum dolor http://site.com sit amet';
$urls[] = 'Lorem ipsum dolor https://www.site.com/ or http://www.site2.com/';
$urls[] = 'Lorem ipsum dolor www.site1.net sit amet';
$urls[] = 'Lorem ipsum dolor www site2.net sit amet';
foreach ( $urls AS $url ) {
if ( preg_match_all( '%(https?://[^\s]+|www\.[^\s]+)%',
$url,
$m,
(PREG_SET_ORDER ^ PREG_OFFSET_CAPTURE)
) ) {
print_r($m);
}
}
?>