【问题标题】:Using preg_match_all matches within Javascript code在 Javascript 代码中使用 preg_match_all 匹配
【发布时间】:2015-11-11 03:49:27
【问题描述】:

我通过使用preg_match_all 函数在我的WordPress 帖子中获取SoundCloud 音频网址,在PHP 中创建了一个正则表达式。正则表达式可以正常工作,没有任何问题:

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

当我尝试preg_match_all[0][0] 时,播放器无法加载,但是当我输入https://soundcloud.com/anevo-remix/h3llo-anevo-remix-final url 时,播放器加载没有任何问题。如何使用 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>';
}
?>

【问题讨论】:

  • 生成的HTML是什么样子的(即使用“查看页面源代码”)?
  • 我发现问题了。当我把 php 代码导致换行符。但我想删除我的 php 代码中的新换行符我该怎么做?
  • “换行符”在哪里?换行符是如何导致问题的?
  • 当我使用 php 代码时,第一个双引号 ramain 在这一行 SC.oEmbed("soundcloud url 但第二个双引号出现在这一行 "{element: document.getElementById("soundcloud-audio") 当我将 url 放在双引号之间时,我手动使用了 url同一行不会引起任何问题,但是当第二个双引号出现新行时,不要加载播放器

标签: javascript php regex


【解决方案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 ?>

【讨论】:

    猜你喜欢
    • 2011-12-28
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2011-09-05
    • 2017-04-25
    • 2022-01-19
    相关资源
    最近更新 更多