Nano Hash - криптовалюты, майнинг, программирование

Проблемы с плагином плейлиста Flowplayer со специальными символами в названии

У меня есть список воспроизведения для потокового проигрывателя на странице. У меня возникают проблемы с треками, названия которых содержат специальные символы. В настоящее время у меня есть код ниже, который отлично работает:

$(function(){
    $f("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.18.swf", {
        clip: {
            baseUrl: "http://localhost/gbc/"
        },
        playlist: [
            {   url: "media/20140724_agoodsong.mp3",
                name: "20140724_agoodsong.mp3",
                title: "this title works",
                class: "audio",
                id: "3"
            }
        ]
    });

    $f("player").playlist("div.playlist:first", {loop:true});
});

Однако второй я ставлю в названии спецсимвол не работает типа title: "this doesn't work". Я не могу сказать об ошибках; в консоли инструментов разработчика или в журналах сервера Apache ничего нет. Все отображается нормально, просто когда я нажимаю на песню, чтобы воспроизвести ее, плеер становится черным, и ничего не происходит. Я попытался поставить перед ним обратную косую черту, чтобы избежать этого, как это title: "this still doesn\'t work", но это ничего не меняет. Вот что заставило меня подумать, что это как-то связано с тем, как с этим справляется плагин Flowplayer Playlist. Поскольку он берет эти значения в JavaScript и вставляет их в шаблон в html следующим образом:

<div class="playlist">
    <ul class="${class}">
        <li>
            <img data-name="${name}" class="audio" src="images/delete.png" id="${id}" />
            <a href="${url}">
                ${title}
            </a>
        </li>
    </ul>
</div>

Вот FIDDLE, который показывает проблему. В настоящее время это работает, но если добавить в заголовок какой-либо специальный символ, оно перестанет работать. Даже добавление html-кодов, таких как &#39; для апострофа, мешает ему работать.

Кто-нибудь знает, как я могу включить заголовок со специальными символами?


Ответы:


1

Так что в итоге я заставил его работать, избегая специальных символов с помощью юникода. Поэтому в данном случае вместо апострофа я использовал \u2019.

$(function(){
    $f("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.18.swf", {
        clip: {
            baseUrl: "http://localhost/gbc/"
        },
        playlist: [
            {   url: "media/20140724_agoodsong.mp3",
                name: "20140724_agoodsong.mp3",
                title: "this title work\u2019s",
                class: "audio",
                id: "3"
            }
        ]
    });

    $f("player").playlist("div.playlist:first", {loop:true});
});

Вы можете увидеть, как приведенный выше код работает в этом FIDDLE.


Хотя это решило мою первоначальную проблему, эти заголовки в моем случае вводились пользователем, поэтому мне пришлось найти способ найти и преобразовать специальные символы в их эквиваленты Unicode. После долгих поисков в Google я не нашел ничего конкретного, поэтому попробовал другой подход. Я отказался от использования шаблона, который используется в документации Flowplayer, и просто распечатал плейлист. в html сам. Итак, теперь в JavaScript я просто устанавливаю базовый URL-адрес для потокового проигрывателя и создаю экземпляр плагина плейлиста.

$f("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.18.swf", {
    clip: {
        baseUrl: 'http://localhost/gbc/'
    }
});

$f("player").playlist("div.playlist:first", {loop:true});

А затем в своем PHP-скрипте я прокручиваю и создаю каждый элемент списка воспроизведения, используя тот же формат, что и шаблон, с которого я начал.

while ($row = mysqli_fetch_assoc($result))
    {
        $id = $row['id'];               
        $name = $row['name'];
        $title = stripslashes($row['title']);
        $type = $row['type'];

        $class = "audio";
        if (strpos($type,'video') !== false) {
            $class = "video";
        }

        print "<ul class='$class'>
                <li>
                    <img data-name='$name' class='deleteAudio' src='images/delete.png' id='$id' />
                    <a href='media/$name'>
                        $title
                    </a>
                </li>
              </ul>";
}

А потом в файле подкачки я просто включаю этот скрипт, чтобы распечатать плейлист.

<div class="playlist">
    <?php include "phpscripts/getAudio.php"; ?>
</div>

Не уверен, что это лучший способ сделать это, но это сработало для меня! Надеюсь, это сэкономит кому-то время и нервы.

01.08.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..