WP
^_^
Я специально подождал пока тема профлудится)
Теперь привожу ПРАВИЛЬНОЕ решение.
-~{}~ 07.07.07 17:21:
з.ы. ув. тредстартер, за это бы время коли не знаешь регулярок написал бы на строковых функциях, это не так сложно, ищем в цикле вхождение '<a ' и '://', находим кто ближе, если ближе '<a' то находим после него '>', и повторяем операцию, если ближе :// то заменяем на ссылку.
Можно конечно еще пробежаться по <a... а не тупо искать '>' зажигая и гася флаг inquotes.
Теперь привожу ПРАВИЛЬНОЕ решение.
PHP:
$text = '... [url]http://phpclub.ru/[/url] ... <a href="...>">[url]http://phpclub.ru[/url]</a> [url]http://phpclub.ru[/url] ... <img src="http://phpclub.ru">... ';
function callback($m)
{
if (isset($m[4])) {return '<a href="'.htmlspecialchars($m[0],ENT_QUOTES).'">'.htmlspecialchars($m[0]).'</a>';}
return $m[0];
}
$result = preg_replace_callback('~<a(?:\s(?:[^\\>\'"]*(?:([\'"]).*?(?<!\\\\)\1)?)*)?>((?:(?R)|.)*?)</a>|<(?:[^\\>\'"]*(?:([\'"]).*?(?<!\\\\)\3)?)*>|([a-z\d]+://[^\s<]+)~si','callback',$text);
echo $result;
// ... <a href="http://phpclub.ru/">[url]http://phpclub.ru/[/url]</a> ... <a href="...>">[url]http://phpclub.ru[/url]</a> <a href="http://phpclub.ru">[url]http://phpclub.ru[/url]</a> ... <img src="http://phpclub.ru">...
з.ы. ув. тредстартер, за это бы время коли не знаешь регулярок написал бы на строковых функциях, это не так сложно, ищем в цикле вхождение '<a ' и '://', находим кто ближе, если ближе '<a' то находим после него '>', и повторяем операцию, если ближе :// то заменяем на ссылку.
Можно конечно еще пробежаться по <a... а не тупо искать '>' зажигая и гася флаг inquotes.