Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Регулярные выражения - замена ссылок

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
vens
Отправлено: 10 Сентября, 2013 - 17:00:50
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Здравствуйте, помогите с регулярным выражением для замены ссылок т.е.

если ссылка вида
CODE (html):
скопировать код в буфер обмена
  1. <a href="http://www.site.ru/">текст</a>

то заменяем на такой вид
CODE (html):
скопировать код в буфер обмена
  1. <span class="link" data-link="http://www.site.ru">текст</span>


если ссылка в таком виде то ничего не заменяем.
CODE (html):
скопировать код в буфер обмена
  1. <a href="/test.html">текст</a>



Заранее спасибо!

(Отредактировано автором: 10 Сентября, 2013 - 17:11:40)

 
 Top
esterio
Отправлено: 10 Сентября, 2013 - 17:23:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




PHP:
скопировать код в буфер обмена
  1. preg_replace('~<a.+href="(https?://.+?)"[^>]*>(.+)</a>~', '<span class="link" data-link="$1">$2</span>', $link);

П.С. не проверял

(Отредактировано автором: 10 Сентября, 2013 - 17:39:20)

 
 Top
vens
Отправлено: 10 Сентября, 2013 - 17:30:44
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




esterio пишет:
preg_replace('~<a.+href="(https?://.+?)"[^>]*>(.+)</a>)~', '<span class="link" data-link="$1">$2</span>', $link);


Спасибо, но не работает

PHP:
скопировать код в буфер обмена
  1.     $link = '<a href="http://vk.com">vk</a>';
  2.     preg_replace('~<a.+href="(https?://.+?)"[^>]*>(.+)</a>)~', '<span class="link" data-link="$1">$2</span>', $link);
  3.     echo $link;
  4.  


выдает ошибку
<b>Warning</b>: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]
 
 Top
esterio
Отправлено: 10 Сентября, 2013 - 17:39:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Поправил выше
 
 Top
vens
Отправлено: 10 Сентября, 2013 - 18:36:50
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




esterio пишет:
Поправил выше


теперь ошибок нету но и замену не делает А?!

PHP:
скопировать код в буфер обмена
  1.  
  2.     $link = '<a href="https://vk.com">vk</a>';
  3.     preg_replace('~<a.+href="(https?://.+?)"[^>]*>(.+)</a>~', '<span class="link" data-link="$1">$2</span>', $link);
  4.     echo $link;
  5.  
 
 Top
esterio
Отправлено: 10 Сентября, 2013 - 18:58:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




ну Вы даете. А результат испольнения замены куда дели?
PHP:
скопировать код в буфер обмена
  1. $link = '<a href="https://vk.com">vk</a>';
  2. $link = preg_replace('~<a.+href="(https?://.+?)"[^>]*>(.+)</a>~', '<span class="link" data-link="$1">$2</span>', $link);
  3. echo $link;
 
 Top
vens
Отправлено: 10 Сентября, 2013 - 19:05:31
Post Id



Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




esterio пишет:
ну Вы даете. А результат испольнения замены куда дели?
PHP:
скопировать код в буфер обмена
  1. $link = '<a href="https://vk.com">vk</a>';
  2. $link = preg_replace('~<a.+href="(https?://.+?)"[^>]*>(.+)</a>~', '<span class="link" data-link="$1">$2</span>', $link);
  3. echo $link;


Спасибо, провтыкал Закатив глазки
 
 Top
Muxa
Отправлено: 11 Сентября, 2013 - 21:02:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


Помог: 5 раз(а)




esterio пишет:
.+

а про жадность никто не подумал..?
PHP:
скопировать код в буфер обмена
  1. $link = '<a href="https://vk.com">vk</a><a href="http://foo.bar">foo</a>';
  2. $link = preg_replace('~<a.+href="(https?://.+?)"[^>]*>(.+)</a>~', '<span class="link" data-link="$1">$2</span>', $link);
  3. echo $link;

(Отредактировано автором: 11 Сентября, 2013 - 21:04:06)

 
 Top
esterio
Отправлено: 12 Сентября, 2013 - 02:04:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




а если не умничать и указвть модификатор U
 
 Top
Muxa
Отправлено: 12 Сентября, 2013 - 08:40:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


Помог: 5 раз(а)




Если не умничать, то можно обойтись и еще двумя знаками вопроса после двух плюсов. Просто странно, тут убрали жадность, тут нет.

язвить всегда легко.. Мой ответ, в отличии от вашего, такой цели не имел, лишь для предупреждения

(Отредактировано автором: 12 Сентября, 2013 - 08:41:12)

 
 Top
esterio
Отправлено: 12 Сентября, 2013 - 10:08:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)





Muxa
Muxa пишет:
а про жадность никто не подумал..?

Muxa пишет:
язвить всегда легко

Взаимоисключающые понятия. А забыл так как не проверял. Да ихватит оффотопа. Топик себя исчерпал
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB