jxrd Posted May 30, 2009 Share Posted May 30, 2009 Hello, I'm trying to match urls to wrap them with bbcode tags. I have this working: <?php $s = 'http://www.site.co.uk/page.php?action=something'; echo preg_replace('/(http\:\/\/|www\.)+([a-z0-9-_]+)\.(.*?)$/', '[url]http://www.$2.$3[/url]', $s); ?> However, I wish to only match urls which don't already have url tags around them already. I've tried stuff like this: <?php $s = 'http://www.site.co.uk/page.php?action=something'; echo preg_replace('/(^\[url\])(http\:\/\/|www\.)+([a-z0-9-_]+)\.(.*?)$(^\[\/url\])/', '[url]http://www.$3.$4[/url]', $s); ?> But I can't seem to get it to work. It's probably something really simple. Any help would be awesome. Link to comment https://forums.phpfreaks.com/topic/160283-urls/ Share on other sites More sharing options...
.josh Posted May 31, 2009 Share Posted May 31, 2009 sounds like a job for positive/negative lookahead/lookbehind/lookaround. Link to comment https://forums.phpfreaks.com/topic/160283-urls/#findComment-846100 Share on other sites More sharing options...
jxrd Posted May 31, 2009 Author Share Posted May 31, 2009 Nice one - I never even knew they existed. End product: preg_replace('/^(?!\[url.*?\](\s)?)(http\:\/\/|www\.)+([a-z0-9-_]+)\.(.*?)$/', '[url]http://www.$4.$5[/url]', $code); Oh hey, I just noticed a bug for you - The exact same code i put up there, but in php tags will look like this: (attempts to convert my url into bbcode despite the fact that it's in code tags) preg_replace('/^(?!\[url.*?\](\s)?)(http\:\/\/|www\.)+([a-z0-9-_]+)\.(.*?)$/', '[url=http://www.$4.$5]http://www.$4.$5[/url]', $code); Just thought I'd let you know. Link to comment https://forums.phpfreaks.com/topic/160283-urls/#findComment-846141 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.