从html代码获取src值?

时间:2015-10-18 02:27:38

标签: php html wordpress src

我有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。

1 个答案:

答案 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不会解释它并会给你一个错误。