123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- <?php
- /**
- * @package koseven/Codebench
- * @category Tests
- * @author Geert De Deckere <geert@idoe.be>
- */
- class Bench_GruberURL extends Codebench {
- public $description =
- 'Optimization for http://daringfireball.net/2009/11/liberal_regex_for_matching_urls';
- public $loops = 10000;
- public $subjects = [
- 'http://foo.com/blah_blah',
- 'http://foo.com/blah_blah/',
- '(Something like http://foo.com/blah_blah)',
- 'http://foo.com/blah_blah_(wikipedia)',
- '(Something like http://foo.com/blah_blah_(wikipedia))',
- 'http://foo.com/blah_blah.',
- 'http://foo.com/blah_blah/.',
- '<http://foo.com/blah_blah>',
- '<http://foo.com/blah_blah/>',
- 'http://foo.com/blah_blah,',
- 'http://www.example.com/wpstyle/?p=364.',
- 'http://✪df.ws/e7l',
- 'rdar://1234',
- 'rdar:/1234',
- 'x-yojimbo-item://6303E4C1-xxxx-45A6-AB9D-3A908F59AE0E',
- 'message://%3c330e7f8409726r6a4ba78dkf1fd71420c1bf6ff@mail.gmail.com%3e',
- 'http://➡.ws/䨹',
- 'www.➡.ws/䨹',
- '<tag>http://example.com</tag>',
- 'Just a www.example.com link.',
- // To test the use of possessive quatifiers:
- 'httpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp',
- ];
- public function bench_daringfireball($subject)
- {
- // Original regex by John Gruber
- preg_match('~\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))~', $subject, $matches);
- return (empty($matches)) ? FALSE : $matches[0];
- }
- public function bench_daringfireball_v2($subject)
- {
- // Removed outer capturing parentheses, made another pair non-capturing
- preg_match('~\b(?:[\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|(?:[^[:punct:]\s]|/))~', $subject, $matches);
- return (empty($matches)) ? FALSE : $matches[0];
- }
- public function bench_daringfireball_v3($subject)
- {
- // Made quantifiers possessive where possible
- preg_match('~\b(?:[\w-]++://?+|www[.])[^\s()<>]+(?:\([\w\d]++\)|(?:[^[:punct:]\s]|/))~', $subject, $matches);
- return (empty($matches)) ? FALSE : $matches[0];
- }
- }
|