php中的字符串修改

时间:2013-09-22 17:46:21

标签: php

我想知道如何将字符串模式更改为其他内容。我正在建立一个小论坛,并希望每当有人进入论坛的textarea部分链接时嵌入youtube视频。 Youtube视频链接看起来像这样;

https://www.youtube.com/watch?v=examplevideo

但是,我想将此字符串更改为这样;

<iframe width="420" height="315"
src="https://www.youtube.com/embed/examplevideo">
</iframe>

所以,除了“examplevideo”字符串之外,我会更换掉所有内容。由于此链接将包含在表单的textarea部分的其他文本中,我的猜测是我必须设置一个if语句来查找“https://www.youtube.com/watch?v=”的任何内容。我是否会使用字符串比较这个?这将如何运作?

3 个答案:

答案 0 :(得分:3)

假设你想回应结果:

if(strpos($url,"youtube.com/watch?v=")){
    echo '<iframe width="420" height="315" src="';
    echo str_replace('/watch?v=','/embed/',$url);
    echo '"></iframe>';
}else{
    echo $url;
}

strpos手册:http://php.net/manual/en/function.strpos.php
str_replace手册:http://php.net/manual/en/function.str-replace.php

答案 1 :(得分:2)

简单的正则表达式解决方案,可以在?v=

之后获取所有内容
$video_name = preg_replace('/^.*\?v=/', '', 'https://www.youtube.com/watch?v=examplevideo');

答案 2 :(得分:1)

我建议使用正则表达式:

// $url is 'https://www.youtube.com/embed/examplevideo'
$url = preg_replace('/https?\:\/\/www.youtube.com/watch\?v=(.*)/i', 'https://www.youtube.com/embed/$1', $url);

它的作用是,它查找以“http://www.youtube.com/watch?v=”开头的字符串(我添加了'?'以便它匹配http和https),接受以下内容并将其附加到'{{3 }}”。