PHP函数从html返回链接

时间:2017-01-21 17:56:55

标签: php wordpress function

我在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)]

2 个答案:

答案 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;
}