PHP一起使用str_replace,substr和strpos

时间:2011-10-28 15:27:11

标签: php str-replace substr strpos

我要做的是在youtube / vimeo上转换视频的网址,返回一个可以嵌入到iframe中的新网址,并自动化视频嵌入代码。

这就像一个魅力。

$url  = "http://vimeo.com/29431603";
$orj_value = array("watch?v=", "http://vimeo.com/");
$new_value   = array("embed/", "http://player.vimeo.com/video/");
$url = str_replace($orj_value, $new_value, $url);
echo $url;

你知道,youtube广告也是一个丑陋的字符串,也是以&开头的url,所以当我加入时

$url = substr($url, 0, strpos($url, "&")); 

echo $url;

它删除了youtube网址中不需要的部分。但是,vimeo代码没有&里面只是不返回任何东西。似乎在添加新行后,代码想看到&在网址内;否则回显$ url var显示空白屏幕。

2-对于dailymotion,我需要先删除所有内容_ 我应该如何编辑下面的行以包括对dailymotion的支持呢?

$url = substr($url, 0, strpos($url, "&")); 

提前感谢任何人回答:)

1 个答案:

答案 0 :(得分:1)

如果strpos()找不到你搜索的字符,它将返回false,这可能会混淆substr()。

尝试这样的事情:

$url = strpos($url, "&") ? substr($url, 0, strpos($url, "&")) : $url;

至于你的评论:

if(strpos($url, "&")) {
    $url = substr($url, 0, strpos($url, "&"));
} else if(strpos($url, "_")) {
    $url = substr($url, 0, strpos($url, "_"));
}

有更优雅的方法(例如REGEX),但这样做。请注意&或_不能是字符串中的第一个字符,如果你想允许这个添加!== false到条件。