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 :: Замена слов на ссылки в html коде

 PHP.SU

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


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

> Описание: не работает str_replace()
mcwasyan
Отправлено: 20 Декабря, 2014 - 17:36:38
Post Id


Новичок


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


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




Добрый день. Имеется html код страницы. Необходимо заменить указанные слова ссылками.
Значения берутся из двух textarea (1-й - значение слов 2-й - значение ссылок), с них построчно считываются значения (например: строка_первого массива[0] должна потом поменятся на <a href="строка_второго массива[0]">строка_первого массива[0]</a>. затем <a href="строка_второго массива[1]">строка_первого массива[1]</a>, и т.д.).

PHP:
скопировать код в буфер обмена
  1.  
  2.        
  3.                 $words = explode("\n",$varname); //формируем массив слов
  4.                 $links = explode("\n",$adres); //формируем массив ссылок
  5.                 $wordsnum = sizeof($words);
  6.        
  7.                 $html = $row->text;
  8.                        
  9.                        
  10.                         for ($i=0; $i<$wordsnum ; $i++)
  11.                         {      
  12.                          
  13.                                 $html=str_replace($words[$i],"<a href=\"$links[$i]\">$words[$i]</a>", $html); //!!!Меняет только последнюю ссылку!!!
  14.                         }
  15.  


всё работает, но почему-то меняется только последнее значение (если $wordsnum = 2, то поменяется только $words[1], а $words[0] останется неизменным)

мне надо, чтобы менялись все значения.
 
 Top
skiphog
Отправлено: 20 Декабря, 2014 - 19:28:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Дек. 2014  
Откуда: Киров, Россия


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




Попробуйте разбить строку не по "\n", а по "\r\n"
PHP:
скопировать код в буфер обмена
  1. $words = explode("\r\n",$varname); //формируем массив слов
  2. $links = explode("\r\n",$adres); //формируем массив ссылок

(Отредактировано автором: 20 Декабря, 2014 - 19:33:57)

 
My status
 Top
mcwasyan
Отправлено: 20 Декабря, 2014 - 19:42:15
Post Id


Новичок


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


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




skiphog пишет:
Попробуйте разбить строку не по "\n", а по "\r\n"
PHP:
скопировать код в буфер обмена
  1. $words = explode("\r\n",$varname); //формируем массив слов
  2. $links = explode("\r\n",$adres); //формируем массив ссылок


Спасибо, это действительно помогло. Но как теперь ограничить число замен? str_replace меняет все вхождения, а мне надо допустим 2 вхождения.
(Добавление)
попробовал с функцией preg_replace(), но не получилось

PHP:
скопировать код в буфер обмена
  1.  
  2. for ($i=0; $i<$wordsnum ; $i++)
  3.                         {      
  4.                                 $word = $words[$i];
  5.                                 $link = $links[$i];
  6.                                 //$html= str_replace($word,"<a href=\"$link\">$word</a>", $html);
  7.                                 $html= preg_replace($word,"<a href=\"$link\">$word</a>", $html,2);
  8.                         }
  9.  
 
 Top
skiphog
Отправлено: 20 Декабря, 2014 - 20:03:32
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Дек. 2014  
Откуда: Киров, Россия


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




PHP:
скопировать код в буфер обмена
  1. $html= preg_replace("/$word/","<a href=\"$link\">$word</a>", $html,2);
 
My status
 Top
mcwasyan
Отправлено: 23 Декабря, 2014 - 15:18:35
Post Id


Новичок


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


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




skiphog пишет:

Спасибо! Очень помог!
 
 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