我在wordpress中的自定义字段中存储了一个html块。我需要使用php函数返回该自定义字段中的链接。它必须是一个功能。这是我尝试过的,但我的结果只是说数组:
<?php
function linkExtractor($html){
$linkArray = array();
if(preg_match_all('/<img\s+.*?src=[\"\']?([^\"\' >]*)[\"\']? [^>]*>/i',$html,$matches,PREG_SET_ORDER)){
foreach($matches as $match){
array_push($linkArray,array($match[1],$match[2]));
}
}
return $linkArray;
}
?>
在wordpress中,我将它用作短代码,它看起来像。这是100%正确的格式,因为我一直使用它。
[linkExtractor(custom_field_name)]
答案 0 :(得分:0)
你的结果是阵列?您似乎正在尝试回显一个您只能获取数据类型的数组。
但是,无论调用该函数还是必须循环遍历该数组。无论如何,清理你的帖子,这样我就能更好地理解它。感谢
$匹配在哪里?此外,您的函数没有HTML参数,也不是一起有效。
顺便说一下,我不熟悉&#34; Wordpress&#34;
答案 1 :(得分:0)
而不是使用正则表达式,尝试一个适当的HTML解析器?例如,DOMDocument:
function linkExtractor(string $html): array {
$ret = array ();
$domd = @\DOMDocument::loadHTML ( $html );
foreach ( $domd->getElementsByTagName ( "*" ) as $ele ) {
if (! \method_exists ( $ele, 'getAttribute' )) {
// not all elements has getAttribute
continue;
}
$link = $ele->getAttribute ( "src" );
if (! is_string ( $link ) || strlen ( $link ) < 1) {
continue;
}
$ret [] = $link;
}
return $ret;
}