Colix Posted September 23, 2007 Report Share Posted September 23, 2007 (edited) Есть такая строчка в PHP - коде: $msg = eregi_replace("(.*)\\[urll\\](.*)\\[/urll\\](.*)","\\1<a href=\\2>\\2</a>\\3",$msg); Так вот, при передаче в переменную $msg строки "[urll]http://www.somewhere.ru[/urll]" строка преображается в "<a href=http://www.somewhere.ru>http://www.somewhere.ru</a>", НО если мы передаём больше одного элемента url - например "[urll]http://www.somewhere.ru[/urll]Something[urll]http://www.somewhere2.ru[/urll]", то функция изменяет только последний - "[urll]http://www.somewhere.ru[/urll]Something<a href=http://www.somewhere2.ru>". Как сделать так, чтобы она превращала всё?! Edited September 23, 2007 by Colix Link to comment Share on other sites More sharing options...
Darhazer Posted September 24, 2007 Report Share Posted September 24, 2007 Условие (.*) у вас не правильно, надо всех символов, изключеная [ $msg = 'test [urll]http://www.somewhere.ru[/urll]Something[urll]http://www.somewhere2.ru[/urll] worked';$msg = eregi_replace("\[urll\]?([^\[]*)?\[/urll\]","<a href=\\1>\\1</a>",$msg);echo $msg; Link to comment Share on other sites More sharing options...
Colix Posted September 24, 2007 Author Report Share Posted September 24, 2007 Условие (.*) у вас не правильно, надо всех символов, изключеная [ $msg = 'test [urll]http://www.somewhere.ru[/urll]Something[urll]http://www.somewhere2.ru[/urll] worked';$msg = eregi_replace("\[urll\]?([^\[]*)?\[/urll\]","<a href=\\1>\\1</a>",$msg);echo $msg; И снова Вы мне помогли, спасибо огромное... Link to comment Share on other sites More sharing options...
Colix Posted September 24, 2007 Author Report Share Posted September 24, 2007 А как тогда сделать такое - [urll=www.something.com]Link title[/urll] Link to comment Share on other sites More sharing options...
Darhazer Posted September 25, 2007 Report Share Posted September 25, 2007 Я пользую preg Но нашел этот код... <?$description = 'test [urll=http://www.somewhere.ru]SomeWhere[/urll] Something [urll=http://www.somewhere2.ru]Another link[/urll] worked';$regLienSimple="\[urll\] ?([^\[]*) ?\[/urll\]"; $regLienEtendu="\[urll ?=([^\[]*) ?] ?([^]]*) ?\[/urll\]"; if (ereg($regLienSimple, $description)) { $description=ereg_replace($regLienSimple, "<a href=\"\\1\">\\1</a>", $description); } else { $description=ereg_replace($regLienEtendu, "<a href=\"\\1\" target=\"_blank\">\\2</a>", $description); }echo $description; Link to comment Share on other sites More sharing options...
Colix Posted October 4, 2007 Author Report Share Posted October 4, 2007 Я пользую preg Но нашел этот код... <?$description = 'test [urll=http://www.somewhere.ru]SomeWhere[/urll] Something [urll=http://www.somewhere2.ru]Another link[/urll] worked';$regLienSimple="\[urll\] ?([^\[]*) ?\[/urll\]"; $regLienEtendu="\[urll ?=([^\[]*) ?] ?([^]]*) ?\[/urll\]"; if (ereg($regLienSimple, $description)) { $description=ereg_replace($regLienSimple, "<a href=\"\\1\">\\1</a>", $description); } else { $description=ereg_replace($regLienEtendu, "<a href=\"\\1\" target=\"_blank\">\\2</a>", $description); }echo $description; Всё работает, спасибо! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now