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
Отправлено: 26 Февраля, 2014 - 00:04:16
Post Id



Гость


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


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




Здравствуйте, имеется в базе в районе 3к статей, в каждой статье есть несколько ссылок на некий ресурс все ссылки разные т.е. доменное имя одно и тоже, а внутренние страницы другие, стала задача все эти ссылки заменить на одну.

Как такое можно реализовать, т.к. вручную 7-10к ссылок менять не вариант. А?!
Думал как-то через регулярку прогнать в цикле а потом проапдейтить но с легулярными не дружу(((

(Отредактировано автором: 26 Февраля, 2014 - 00:05:04)

 
 Top
Panoptik
Отправлено: 26 Февраля, 2014 - 01:12:00
Post Id



Постоянный участник


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


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




ну так предоставьте примеры того ЧТО нужно менять и НА ЧТО
возможно вам помогут. а так в предсказамуса играть никому не охота


-----
Just do it
 
 Top
vens
Отправлено: 26 Февраля, 2014 - 12:41:49
Post Id



Гость


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


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




Panoptik пишет:
ну так предоставьте примеры того ЧТО нужно менять и НА ЧТО
возможно вам помогут. а так в предсказамуса играть никому не охота


Есть ссылки (например):
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <a href="http://site.ru/что-то/что-то-еще/ ">какое-то название</a>
  3. <a href="http://site.ru/что-то222/что-то-еще222/ ">какое-то название</a>
  4.  

т.е. http://site[dot]ru/ нужно оставить а вот эти "что-то" они везде разные нужно заменить например на "http://site[dot]ru/некая ссылка"
 
 Top
qtk
Отправлено: 26 Февраля, 2014 - 12:57:37
Post Id


Частый гость


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


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




А ссылки хронятся в базе данных? В отдельной колонке?
 
 Top
vens
Отправлено: 26 Февраля, 2014 - 13:19:41
Post Id



Гость


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


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




qtk пишет:
А ссылки хронятся в базе данных? В отдельной колонке?

нет, ссылки в месте с текстом.
 
 Top
qtk
Отправлено: 26 Февраля, 2014 - 13:26:15
Post Id


Частый гость


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


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




Тогда пишите регулярку, которая выберет все ссылки и затем через цикл заменяете через str_replace
 
 Top
vens
Отправлено: 26 Февраля, 2014 - 13:53:25
Post Id



Гость


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


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




qtk пишет:
Тогда пишите регулярку, которая выберет все ссылки и затем через цикл заменяете через str_replace


я об этом написал еще в самом первом посту что не дружу с регулярками. Можно какой-то пример регулярки?
 
 Top
qtk
Отправлено: 26 Февраля, 2014 - 14:09:18
Post Id


Частый гость


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


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




Вечером, после работы. А в остальном понятно как реализовать?
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. if(preg_match('#((http(s?):\/\/)|(www\.))([A-Za-zА-Яа-я0-9\.\/\=\+\-\_\?\&\%\#\~\*\:]+)#i',$value))
  3. {
  4.         preg_match_all('#((http(s?):\/\/)|(www\.))([A-Za-zА-Яа-я0-9\.\/\=\+\-\_\?\&\%\#\~\*\:]+)#i',$value,$links);
  5.         foreach($links[0] as $data)
  6.         {
  7.                 $links=str_replace('&','&',$links);
  8.                 $data=trim($data,"\x00..\x1F");
  9.                 $value=str_replace($data,'http://newLink',$value);
  10.         }
  11. }        
  12.     echo $value;
  13.  
 
 Top
vens
Отправлено: 26 Февраля, 2014 - 14:45:57
Post Id



Гость


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


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




qtk пишет:
Вечером, после работы. А в остальном понятно как реализовать?
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. if(preg_match('#((http(s?):\/\/)|(www\.))([A-Za-zА-Яа-я0-9\.\/\=\+\-\_\?\&\%\#\~\*\:]+)#i',$value))
  3. {
  4.         preg_match_all('#((http(s?):\/\/)|(www\.))([A-Za-zА-Яа-я0-9\.\/\=\+\-\_\?\&\%\#\~\*\:]+)#i',$value,$links);
  5.         foreach($links[0] as $data)
  6.         {
  7.                 $links=str_replace('&','&',$links);
  8.                 $data=trim($data,"\x00..\x1F");
  9.                 $value=str_replace($data,'http://newLink',$value);
  10.         }
  11. }        
  12.     echo $value;
  13.  


Да но как я понял оно ищет все ссылки, а мне нужны только с доменом http://site[dot]ru/
Заранее спасибо.
 
 Top
qtk
Отправлено: 26 Февраля, 2014 - 14:50:19
Post Id


Частый гость


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


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




PHP:
скопировать код в буфер обмена
  1. mysql_connect("mysql_host", "mysql_user", "mysql_password");
  2. mysql_select_db("my_database");
  3. $query = "SELECT * FROM my_table";
  4. $result = mysql_query($query);
  5. while ($arr = mysql_fetch_array($result))
  6. {
  7.     $value = $arr['colLink'];
  8.     if(preg_match('#((http(s?):\/\/)|(www\.)SITE.RU\/)([A-Za-zА-Яа-я0-9\.\/\=\+\-\_\?\&\%\#\~\*\:]+)#i',$value))
  9.     {
  10.         preg_match_all('#((http(s?):\/\/)|(www\.)SITE.RU\/)([A-Za-zА-Яа-я0-9\.\/\=\+\-\_\?\&\%\#\~\*\:]+)#i',$value,$links);
  11.         foreach($links[0] as $data)
  12.         {
  13.             $links=str_replace('&','&',$links);
  14.             $data=trim($data,"\x00..\x1F");
  15.             $value=str_replace($data,'http://newLink',$value);
  16.         }
  17.     }        
  18.     $q = "UPDATE my_table SET colLink = $value";
  19.     mysql_query($q);
  20. }
  21.  

(Отредактировано автором: 26 Февраля, 2014 - 18:26:49)

 
 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