【问题标题】:How to make this with php a youtube video?如何用 php 制作这个 youtube 视频?
【发布时间】:2014-07-14 12:37:54
【问题描述】:

我有一些文字,其中包含每次来自 youtube 的视频链接,但格式如下:

Lorem ipsum text e3txt sdfsdds f dsf sdf dsfsdfds fds fds fds fdsf sdf sd fds fd Lorem ipsum sgsdfds fds fds fdsfsdfsdfds.

{youtube}uqfYNxP7GzM{/youtube}

...所以我想要做的是,我想用 php 将 {youtube}uqfYNxP7GzM{/youtube} 制作成使用 iframe 代码的可播放视频,如下所示:

<iframe width="640" height="360" src="//www.youtube.com/embed/uqfYNxP7GzM" frameborder="0" allowfullscreen></iframe>

问题是 uqfYNxP7GzM 并不总是一样的!!!因为非常视频是其他的.. 嗯,所以我怎么能把这个模式 {youtube}hereeverytimedifferentcode{/youtube} 变成 iframe 可播放视频?

也许有 preg-replace、str-replace 或一些类似的功能?但是我怎么能这样做,因为 {youtube}value{/youtube} 的值每次都是其他的?

感谢等待您宝贵的帮助!

【问题讨论】:

  • 我想把这个 {youtube}uqfYNxP7GzM{/youtube} ..变成这个 iframe width="640" height="360" src="//www.youtube.com/embed/uqfYNxP7GzM " frameborder="0" allowfullscreen>..但是uqfYNxP7GzM每次newone都不一样,变化..怎么???
  • 军团你有没有发现什么有趣的事情?请问您能帮忙吗?
  • 我想我们也需要正则表达式..对吗?但我对正则表达式了解不多..

标签: php iframe video youtube str-replace


【解决方案1】:

我不太擅长正则表达式。但这可能有效:

$opa2 = " Lorem ipsum text e3txt sdfsdds f dsf sdf dsfsdfds fds fds fds f dsf sdf sd fds fd Lorem ipsum sgsdfds fds fds fdsfsdfsdfds domr text jwweorw {youtube}uqfYNxP7GzM{/youtube}"; 
$pattern = "/{youtube}(.*?){\/youtube}/";
preg_match_all($pattern, $opa2, $matches);
if(isset($matches[0]) && !empty($matches[0])) { // if indeed there are
    $id = reset($matches[1]);
    $opa3 = preg_replace($pattern, "<iframe width='640' height='360' src='http://www.youtube.com/embed/$id'></iframe>", $opa2);
}
echo $opa3;

【讨论】:

  • 很好!但我有一个问题.. {youtube}{/youtube} 的东西仍然在输出中.. 显示:( 请参阅下面的修改代码:$pattern = "/{youtube}(.*?){\/youtube }/"; preg_match_all($pattern, $opa2, $matches); if(isset($matches[0]) && !empty($matches[0])) { // 如果确实有 $id = reset($匹配[1]); } $opa3 = str_replace("$id", "
  • @Markets_is_modern_Slavery 所以{youtube}{/youtube} 需要在字符串中删除?
  • 这里的代码更好:pastebin.com/HLDDSkiV {youtube}这里是显示完美的视频{/youtube},当 ill echo $opa3; .我希望 {youtube}{/youtube} 在输出中不可见。该怎么做?
  • preg_replace 和 $pattern 是解决方案!感谢您的帮助对我来说非常重要。非常感谢!
  • 嗯.. 在我们之前解决的示例中,我还有一个案例。如果里面的 {youtube}uFcTAk_A9Nc{/youtube} 有一些元素,它是这样的: {youtube}uFcTAk_A9NcuFcTAk_A9Nc |600|450|0{/youtube} 我们能做什么?如您所见,问题在于包含“|600|450|0”的额外数据,这种数据有时会出现并且也可能不同。可能是 |600|450|0,其他时候是 |800|600|0 等等。所以......在这种情况下,我们可以做些什么来像以前一样解决它?
【解决方案2】:

嗯..我们之前解决的例子还有一个案例。

如果里面的 {youtube}uqfYNxP7GzM{/youtube} 有一些额外的元素,它是这样的:

{youtube}uqfYNxP7GzM |600|450|0{/youtube}

我们能做什么?

如您所见,问题在于包含“|600|450|0”的额外数据,这种数据有时会出现,并且可能会有所不同。可能是 |600|450|0,其他时间是 |800|600|0 等等。

那么...在这种情况下,我们可以做些什么来像以前一样解决它?

我试过了:

$pattern1 = "/{youtube}(.*?)600|450|0{\/youtube}/";

但不工作..

【讨论】:

    【解决方案3】:

    您可以将 PHP 的 preg_match 方法与正则表达式“/\{youtube\}(.*)\{\/youtube\}/s”一起使用。并返回 $array 的第二个元素作为结果

        $input= "{youtube}uqfYNxP7GzM{/youtube}";
    
        preg_match("/\{youtube\}(.*)\{\/youtube\}/s",$string, $r);
    
        $result= $r[1];
    
        echo $result;
    

    【讨论】:

    • $starttext 采用这种形式,包括文本和 {youtube}value{/youtube} --> $startText = " Lorem ipsum text e3txt sdfsdds f dsf sdf dsfsdfds fds fds fds f dsf sdf sd fds fd Lorem ipsum sgsdfds fds fds fdsfsdfsdfds domr text jwweorw {youtube}uqfYNxP7GzM{/youtube}";
    • 我们不必将第一个 {youtube}value{/youtube} 与 $startText 的其余文本分开吗? ..hmm 还有一点是要替换 {youtube}uqfYNxP7GzM{/youtube}。
    • 感谢 Lissy,但 MarioD'Boro 更了解我想要什么,他的回答正是我想要做的。不管怎样,看看上面,你的代码对我也有帮助,但它不适合我的情况。
    • 这篇文章被自动标记为低质量,因为它太短/只有代码。您是否介意通过添加一些文本来解释它如何解决问题来稍微扩展它?
    猜你喜欢
    • 2015-10-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 2011-07-18
    • 2018-10-10
    • 2021-07-31
    • 2013-12-07
    相关资源
    最近更新 更多