Использование preg match все совпадения в коде Javascript



Я создал регулярное выражение в PHP с помощью функции preg_match_all, чтобы получить звуковой url SoundCloud в моем посте WordPress. Регулярное выражение работает правильно без каких-либо проблем:



preg_match_all[0][0] = https://soundcloud.com/anevo-remix/h3llo-anevo-remix-final


Когда я пытаюсь preg_match_all[0][0] плеер не загружается, но когда я ставлю url https://soundcloud.com/anevo-remix/h3llo-anevo-remix-final, плеер загружается без каких-либо проблем. Как я могу использовать PHP код таким образом, что плеер загружается?



<?php
$soundcloud_pattern = "/((http://(soundcloud.com/.*|soundcloud.com/.*/.*|soundcloud.com/.*/sets/.*|soundcloud.com/groups/.*|snd.sc/.*))|(https://(soundcloud.com/.*|soundcloud.com/.*/.*|soundcloud.com/.*/sets/.*|soundcloud.com/groups/.*)))/i";
if(preg_match_all($soundcloud_pattern, $subject, $soundcloud_audio_url)) {
var_dump($soundcloud_audio_url);
echo '
<script src="https://connect.soundcloud.com/sdk/sdk-3.0.0.js"></script>
<div id="soundcloud-audio"></div>
<script type="text/JavaScript">
SC.oEmbed("'.$soundcloud_audio_url[0][0].'", {
element: document.getElementById("soundcloud-audio")
});
</script>';
}
?>
534   1  

1 ответ:

Попробуйте вот так. Я также не вижу причин использовать preg_match_all

<?php
$soundcloud_pattern = "/((http:\/\/(soundcloud\.com\/.*|soundcloud\.com\/.*\/.*|soundcloud\.com\/.*\/sets\/.*|soundcloud\.com\/groups\/.*|snd\.sc\/.*))|(https:\/\/(soundcloud\.com\/.*|soundcloud\.com\/.*\/.*|soundcloud\.com\/.*\/sets\/.*|soundcloud\.com\/groups\/.*)))/i";
if (preg_match($soundcloud_pattern, $subject, $soundcloud_audio_url)) : ?>
<script src="https://connect.soundcloud.com/sdk/sdk-3.0.0.js"></script>
<div id="soundcloud-audio"></div>
<script>
SC.oEmbed(<?= json_encode(trim($soundcloud_audio_url[0])) ?>, {
    element: document.getElementById("soundcloud-audio")
});
</script>
<?php endif ?>

Comments

    Ничего не найдено.