我有WordPress的短代码。
function url( $atts, $content = null ) {
$url = parse_url($content);
$url_new = base64_encode($content);
return '<div id="url_new"><a href="'.$url_new.'" target="_blank">'.$url_new['host'].'</a></div>';
}
add_shortcode( 'url', 'url' );
我需要从$ content中提取SRC
function url( $atts, $content = null ) {
***EXTRACT $content and get src as $url_from_src***
$url = parse_url($content);
$url_new = base64_encode($content);
return '<div id="url_new"><a href="'.$url_new.'" target="_blank">'.$url_new['host'].'</a></div>';
}
add_shortcode( 'url', 'url' );
所以我可以使用
[url]
<iframe width="560" height="315" src="https://www.youtube.com/embed/xxxxx" frameborder="0" allowfullscreen></iframe>
[/url]
并获取
<div id="url_new">
<a href="https://www.youtube.com/embed/xxxxx" target="_blank">youtube.com</a>
</div>
但是,只有它是html,如果它是例如[url]https://www.youtube.com/embed/xxxxx[/url]
它也应该返回
<div id="url_new">
<a href="https://www.youtube.com/embed/xxxxx" target="_blank">youtube.com</a>
</div>
答案(以防有人或我需要它):
function url( $atts, $content = null ) {
preg_match('/src="([^"]+)"/', $content, $matches);
if ( isset($matches[1]) )
{
$url = $matches[1];
$url_parsed = parse_url($url);
$url_parsed_base = base64_encode($url);
return '<div id="url_parsed"><a href="'.$url_parsed_base.'" target="_blank">'.$url_parsed['host'].'</a></div>';
} else {
$url = $content;
$url_parsed = parse_url($url);
$url_parsed_base = base64_encode($url);
return '<div id="url_parsed"><a href="'.$url_parsed_base.'" target="_blank">'.$url_parsed['host'].'</a></div>';
}
}
add_shortcode( 'url', 'url' );
感谢Iago Melanias。
答案 0 :(得分:0)
您可以将preg_match
函数与正则表达式一起使用,以从html代码中获取src参数。
function url( $atts, $content = null ) {
preg_match('/src="([^"]+)"/', $content, $matches);
$url = $matches[1];
$parsedUrl = parse_url($url);
return '<div id="url_new"><a href="'.$url.'" target="_blank">'.$parsedUrl['host'].'</a></div>';
}
不要使用***
作为评论,php不会解释它并会给你一个错误。