Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Вопрос по eregi_replace


Рекомендуемые сообщения

Есть такая строчка в 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>". Как сделать так, чтобы она превращала всё?! :g:

Изменено пользователем Colix
Ссылка на комментарий
Поделиться на другие сайты

Условие (.*) у вас не правильно, надо всех символов, изключеная [

$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;
Ссылка на комментарий
Поделиться на другие сайты

Условие (.*) у вас не правильно, надо всех символов, изключеная [

$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;

И снова Вы мне помогли, спасибо огромное...

Ссылка на комментарий
Поделиться на другие сайты

Я пользую preg :doh:

Но нашел этот код...

<?$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;
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Я пользую preg :blush2:

Но нашел этот код...

<?$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;

Всё работает, спасибо!

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...