从 html 代码获取 src 值?

Get src value from html code?

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

也应该return

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

您可以使用带有正则表达式的 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 不会解释它并且会给你一个错误。