2015-10-18 56 views
-1

我有WordPress的简码。从html代码获取src值?

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'); 

我需要从$内容中提取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> 

ANSWER(以防万一有人或者我再需要它):

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'); 

感谢伊阿古Melanias。

+0

内容变量返回的HTML代码? –

+0

是的,$ content是shortcode中的所有文本,如果你这样问的话。我不擅长编码。如果这是可能的,它会让我的发布更容易。 :) – user3918164

回答

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

+0

谢谢,为我工作几乎没有什么调整,除非,如果没有src,如何使它返回$ content如果$ content没有src =“” – user3918164

+0

你可以检查是否设置了'$ matches [1]' 'isset'功能。 –

+0

完美地工作。万分感谢。 – user3918164