问题:
使用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/
答案 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);