За последние 24 часа нас посетили 32809 программистов и 1819 роботов. Сейчас ищут 818 программистов ...

Как поменять слова в тексте на ссылку

Тема в разделе "PHP для новичков", создана пользователем kikosik, 6 мар 2018.

  1. kikosik

    kikosik Активный пользователь

    С нами с:
    13 апр 2017
    Сообщения:
    60
    Симпатии:
    0
    Здравствуйте, такая проблема и не как не могу решать.

    В столбце(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;

    }

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

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

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

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

    Поможете разобратся?
    Спасибо
     
    #1 kikosik, 6 мар 2018
    Последнее редактирование: 6 мар 2018
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
  3. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    @kikosik Ты смешиваешь перебор масок в массиве и совпадений масок в тексте да еще и в цикле работы с базой, лучше получить все из базы, закрыть соединение и потом обработать данные.
    Примерно так:
    PHP:
    1. <?php
    2. foreach ($content as $row){
    3. foreach ($menu_janr as $key => $value){
    4. str_replace($value, '<a href='.$key.'>'.$value.'</a>', $row)}}
     
  4. kikosik

    kikosik Активный пользователь

    С нами с:
    13 апр 2017
    Сообщения:
    60
    Симпатии:
    0
    Я не понял что за строка foreach($content as $row). ? Что за переменные?
    --- Добавлено ---
    Такую ошибку выдает

    Invalid argument supplied for foreach() in... Эту строку показывает foreach($contentas$row){
     
  5. kikosik

    kikosik Активный пользователь

    С нами с:
    13 апр 2017
    Сообщения:
    60
    Симпатии:
    0
    Спасибо получилась))