0

我正在尝试显示存储在同一列中的社交媒体网址,如下所示:

https://twitter.com/username,
https://www.facebook.com/username,
https://username.tumblr.com/,

这是我的显示代码:

$stmt = $pdo->prepare("SELECT * FROM profiles");
$stmt->execute();
$row = $stmt->fetch();

$temp = array();
$row['ik_social'] = trim($row['ik_social'], ',');
$temp   = explode(',', $row['ik_social']);
$temp   = array_filter($temp);

$item = array();
foreach($temp as $k => $value){
    $item[]= trim(str_replace(array('[',']'),"",$value ));
}

foreach($item as $k=> $val){
    If (stristr($val, "codepen.io")){
        echo '<a target="_blank" rel="noopener" href="'.$val.'" title="codepen">codepen</a>';
    }else if(stristr($val, "github.com")){
        echo '<a target="_blank" rel="noopener" href="'.$val.'" title="github">github</a>';
    }else if(stristr($val, "aycan.net")){
        echo '<a target="_blank" rel="noopener" href="'.$val.'" title="facebook">facebook</a>';
    }else if(stristr($val, "youtube.com")){
        echo '<a target="_blank" rel="noopener" href="'.$val.'" title="youtube">youtube</a>';
    }
}

它工作正常,但似乎我不需要那么多代码,有没有捷径可以做到?

4

1 回答 1

1

如果您已存储 url 逗号分隔,则可以在一行中尝试此操作,如果您从以下位置获得结果DB

$url_array = array_unique(explode(',', preg_replace('/\s+/', '', $row['ik_social'])));

preg_replace将删除所有空格、制表符和换行符。

explode将创建数组列表。

array_unique将清洁重复。

您可以尝试使用 url 解析器并根据需要进行重建,也必须验证 url 才能正常工作...

例子:

<?php

$url_array=[
    'https://twitter.com/username',
    'https://www.facebook.com/username',
    'https://username.tumblr.com/',
    ];
    
    foreach($url_array as $k=> $url){
        if (filter_var($url, FILTER_VALIDATE_URL) && $url != '') {
            $comp_url = parse_url($url);
            $main_url = $comp_url['scheme'].'://'.$comp_url['host'].'/';
            $host_url = $comp_url['host'];
            echo '<a target="_blank" rel="noopener" href="'.$main_url.'" title="'.$host_url.'">'.$host_url.'</a><br>';
        } else {
        echo("$url is not a valid URL");
        }
    }

结果:

<a target="_blank" rel="noopener" href="https://twitter.com/" title="twitter.com">twitter.com</a><br><a target="_blank" rel="noopener" href="https://www.facebook.com/" title="www.facebook.com">www.facebook.com</a><br><a target="_blank" rel="noopener" href="https://username.tumblr.com/" title="username.tumblr.com">username.tumblr.com</a><br>

文档:

https://www.php.net/manual/en/function.parse-url.php

我有使用,数组有例子;但您需要迭代您的数据库返回结果。

注意:这仅适用于自然 URL,不适用于 twitter 或 skype 等应用程序 URL 快捷方式。

于 2020-12-24T04:05:10.437 回答