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
Форумы портала PHP.SU :: Версия для печати :: Как поменять слова в тексте на ссылку
Форумы портала PHP.SU » » Вопросы новичков » Как поменять слова в тексте на ссылку

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

1. kikosik666 - 06 Марта, 2018 - 09:27:15 - перейти к сообщению
Здравствуйте, такая проблема и не как не могу решать.


В столбце(Aboutfilm) базы хранятся такой текст
"
Год: 2016
Страна: Мексика, Канада, США
Жанр: драма, криминал, отечественное, ужасы, мелодрама, приключения
Режиссер: Роберт Бин
В ролях: Марк, Мари, Пупар, Николь, Анна, Джейн
"
У меня есть массив с жанрами и ссылками, и хочу чтобы код искал по жанрам, если есть совпадение по словам массива, автоматический сделал ссылку(например так. <a href = "dramy/">драма</a>, <a href = "kriminal/">криминал</a>....)

Вот мой код

$menu_janr = array();
$menu_janr['melodramy/']='мелодрама';
$menu_janr['istoricheskie-filmy/']='история';
$menu_janr['biograficheskie-filmy/']='биография';
$menu_janr['komedii/']='комедия';
$menu_janr['priklyucheniya/']='приключения';
$menu_janr['kriminal/']='криминал';
$menu_janr['uzhasy/']='ужасы';
$menu_janr['trillery/']='триллер';
$menu_janr['fantastika/']='фантастика';
$menu_janr['vesterny/']='вестерн';
$menu_janr['fehntezi/']='фэнтези';
$menu_janr['boeviki/']='боевик';
$menu_janr['voennye-filmy/']='военный';
$menu_janr['semejnye-filmy/']='семейные';
$menu_janr['detektivy/']='детектив';
$menu_janr['mistika/']='мистика';
$menu_janr['dokumentalnoe-kino/']='документальное';
$menu_janr['sportivnye/']='спорт';
$menu_janr['muzykalnye-filmy/']='музыкальные';
$menu_janr['anime/']='аниме';
$menu_janr['tv-shou/']='тв-шоу';
$menu_janr['dramy/']='драма';

$db = mysql_connect ("localhost", "root", "");
mysql_select_db("nig",$db);

$news = mysql_query("SELECT * FROM table1 ORDER BY ID DESC limit 1");
while ($row = mysql_fetch_assoc($news, MYSQL_ASSOC)) {
//foreach ($menu_janr as $key => $menulink )

foreach ($menu_janr as $key => $value)
{
$content = $row['Aboutfilm'];
$content = mb_strtolower($content, 'UTF-8');
$arg = $value;
$pos = strripos($content, $arg);
if ($pos !== false) {

$text6.="<a class='linq' href='$key'>$value,</a> ";
$content = str_replace($arg, $text6, $content);

}

}
echo $content;

}

Получаю вот такое

жанр: мелодрама,приключения,криминал,ужасы,драма, , криминал, отечественное, ужасы, меломелодрама,приключения,криминал,ужасы,драма,

Но должен быть так

жанр: мелодрама,приключения,криминал,ужасы,драма, отечественное

Поможете разобратся?
Спасибо
2. Vladimir Kheifets - 07 Марта, 2018 - 13:07:07 - перейти к сообщению
kikosik666 пишет:
Здравствуйте, такая проблема и не как не могу решать.

Получаю вот такое

жанр: мелодрама,приключения,криминал,ужасы,драма, , криминал, отечественное, ужасы, меломелодрама,приключения,криминал,ужасы,драма,

Но должен быть так

жанр: мелодрама,приключения,криминал,ужасы,драма, отечественное

Поможете разобратся?
Спасибо


Добрый день!

Ошибка в том, что у Вас, не хватает $text6="";
PHP:
скопировать код в буфер обмена
  1. while ($row = mysql_fetch_assoc($news, MYSQL_ASSOC))
  2. {      
  3.         .............
  4.         foreach ($menu_janr as $key => $value)
  5.         {
  6.                 ...............
  7.                 if ($pos !== false)
  8.                 {  
  9.                         $text6.="<a class='linq' href='$key'>$value,</a> ";
  10.                         $content = str_replace($arg, $text6, $content);
  11.                 }
  12.         }
  13.         $text6="";
  14.         echo $content;  
  15. }

Удачи!

 

Powered by ExBB FM 1.0 RC1