【问题标题】:PHP use str_replace, substr and strpos all togetherPHP 一起使用 str_replace、substr 和 strpos
【发布时间】:2011-12-17 09:34:06
【问题描述】:

我想要做的是在 youtube/vimeo 上转换视频的 url,返回一个新的 url,可以嵌入到 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 中看到 & ;否则 echo $url var 显示空白屏幕。

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

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

提前感谢任何愿意回答的人:)

【问题讨论】:

    标签: php str-replace substr strpos


    【解决方案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 到条件。

    【讨论】:

    • 它工作得很好.. 非常感谢 Hikaru :) 编辑这个 $url = strpos($url, "&") 会很容易吗? substr($url, 0, strpos($url, "&")) : $url;并使其在 first & 或 first _ 之后删除任何内容?
    • 我添加了一些小调整。你不能在 if-else 那里使用这个快捷符号。
    • 效果很好,非常感谢 Hikaru...我点击了复选框,但由于某种原因它不会让我在您的消息中将 0 变为 1 :)
    • 你需要点击向上的箭头;)
    • 投票需要 15 声望 :) 这就是我每次都能得到的。我相信那是因为我是新用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    相关资源
    最近更新 更多