如何从一个变量解析多个链接?

时间:2019-11-29 作者:Ali Mosallaei

因此,我设置了一个Pod作为短代码,它输出用户上传文件的链接。下面是我制作的以下短代码(假设我的短代码是[getShortCode field="upload_files"]:

function pods_current_user($atts) {
   extract(shortcode_atts(array(
      \'currUser\' => get_current_user_id(),
   ), $atts)); 
   extract(shortcode_atts(array(
    \'field\' => "display_name",
 ), $atts)); 
    $message = do_shortcode(\'[pods name="user" where="ID = \'.$currUser.\'"] {@\'.$field.\'}[/pods]\');
    return $message;
 }
add_shortcode(\'getShortCode\', \'pods_current_user\'); 
目前,它输出的是一组到上传文件的链接,但作为纯文本,而不是超链接。如下所示:

http://secureservercdn.net/196.71.233.106/7ho.fa0.myftpupload.com/wp-content/uploads/2019/11/Screnshot-5.png?time=1575937207 http://secureservercdn.net/196.71.233.106/7ho.fa0.myftpupload.com/wp-content/uploads/2069/11/Geting-started-with-OneDrive-1.pdf?time=1675037207

(没有超链接)。有没有一种方法可以将链接从我的一个变量分离到一个可伸缩的数组中,就在我的快捷码函数中?比如可能检测到http 是这样分开链接的吗?谢谢

1 个回复
最合适的回答,由SO网友:Tom 整理而成

我会在这里调查这个问题https://stackoverflow.com/questions/36564293/extract-urls-from-a-string-using-php

您可以使用上述链接检测在您的短代码中执行类似操作:

<?php
function pods_current_user($atts) {
   extract(shortcode_atts(array(
      \'currUser\' => get_current_user_id(),
   ), $atts)); 
   extract(shortcode_atts(array(
    \'field\' => "display_name",
 ), $atts)); 


    $message = do_shortcode(\'[pods name="user" where="ID = \'.$currUser.\'"] {@\'.$field.\'}[/pods]\');

    preg_match_all(\'#\\bhttps?://[^,\\s()<>]+(?:\\([\\w\\d]+\\)|([^,[:punct:]\\s]|/))#\', $message, $match);

    // Do something with your links via the $match array.

    return $message;
 }
add_shortcode(\'getShortCode\', \'pods_current_user\'); 

相关推荐

如何将Single-*.php放在特定的文件夹中?

我正在组织和清理代码,以使其更易于维护。事实证明,我的网站有很多自定义帖子类型,所以我有大约15个单发-***。我的网站根目录下的php文件。为了使树视图更清晰,我希望所有这些文件都列在一个特定的“单个”文件夹中。显然,Wordpress只识别单个-***。位于主题根目录的php文件。有办法解决这个问题吗?提前感谢您的帮助。