使用PHP,搜索URL字符串并将该URL保存为值

时间:2014-09-05 22:54:54

标签: php string wordpress url replace

问题:
使用PHP,我如何搜索URL的字符串,将该URL保存为变量,然后从字符串中删除URL?

这是我的问题:
我正在设计一个WordPress网站,并在主页上有一个框,其中包含我客户端的最新播客。在阅读Podcast帖子时,插件会将播客的URL更改为HTML5音频播放器。但是,在主页上,这个插件不起作用,只显示URL,除非我使用他们的PHP短代码。

我需要做什么:我需要获取帖子的内容并将其保存为变量。我是这样做的:

$content = get_the_content();


然后,我需要解析变量$content以找到播客的URL(应该是字符串中的第一个内容),将该URL保存为变量,然后从中删除URL $content(我不知道该怎么做。)

然后,我需要用短代码替换该URL并打印出其余的播客文本。像这样:

<?php 
$podcastURL = //Code I do not know how to write// ;

echo do_shortcode('[audio mp3="'.$podcastURL.'" autoplay="off" loop="off" preload="on" controls="on" flash_fallback="on"]'); 

echo $content;

?>


我知道的事情
- URL应该是字符串中的第一件事。我可以告诉我的客户这是必要的 - 网址始终以:http://mcmaz.co/podcasts/开头 - 网址将始终以:.mp3结尾 - 网址格式应为:http://mcmaz.co/podcasts/2014/08/19/Getting_Your_Home_in_Order.mp3


我不知道的事情
- /podcasts/之后和.mp3之前的网址部分 - 将www.放在mcmaz.co之前的用户错误。

资源
- 有破坏玩家的网站主页:http://www.staticchurch.com
- 带有工作插件的示例播客页面:http://staticchurch.com/podcast/getting-your-home-in-order/

2 个答案:

答案 0 :(得分:0)

使用preg_match_all('/http\:\/\/mcmaz\.co\/podcasts\/.+\.mp3/', $content, $matches);将返回匹配项。

同时preg_replace('/http\:\/\/mcmaz\.co\/podcasts\/.+\.mp3/', '', $content);将使用 nothing 替换所有网址。

然后问题是在播客代码中使用匹配+进行预告,并完成一些额外的工作。

答案 1 :(得分:0)

$text = 'http://mcmaz.co/podcasts/2014/08/19/Getting_Your_Home_in_Order.mp3 Guest speaker Pastor Rick Holman over the Cactus campus';

$start = 'http';
$end = 'mp3';

function getMiddle($string, $start, $end){
    $string = " ".$string;
    $ini = strpos($string,$start);
    if ($ini == 0) return "";
    $ini += strlen($start);
    $len = strpos($string,$end,$ini) - $ini;
    return substr($string,$ini,$len);
}

$middle = getMiddle($text, $start, $end);

//Saved url variable
$url = $start.''.$middle.''.$end;
//Text with removed url
$text = str_replace($url, '', $text);