将逗号分隔的字符串转换为数组

med*_*med 10 php arrays string

我有一个逗号分隔的字符串,它包含一个标记列表,并希望将其转换为数组以获取每个标记的链接.

例:

$string = 'html,css,php,mysql,javascript';
Run Code Online (Sandbox Code Playgroud)

我想这样做:

<a href="tag/html">html</a>, <a href="tag/css">css</a>, <a href="tag/php">php</a>, <a href="tag/mysql">mysql</a>, <a href="tag/javascript">javascript</a>
Run Code Online (Sandbox Code Playgroud)

因此,结果将是一个字符串,其中包含逗号分隔的链接,每个链接后都有一个空格,并且在最后一个链接后没有逗号.

我有这个函数,其中$ arg ='html,css,php,mysql,javascript':

function info_get_tags( $arg ) {
    global $u;

    $tagss = '';
    if ( $arg == '' ) {
        return '';
    } else {
        $tags_arr = explode( ',' , $arg );
        foreach ( $tags_arr as $tag ) {
            $tags = '<a href="' . $u . 'tag/' . $tag . '/" title="' . $tag . '">' . $tag . '</a>';
            $tagss .= $tags;
        }

        return $tagss;
    }
}
Run Code Online (Sandbox Code Playgroud)

这个脚本适合我,但没有逗号和空格,如果我们在这里添加一个逗号和空格:

$tags = '<a href="' . $u . 'tag/' . $tag . '/">' . $tag . '</a>, ';
Run Code Online (Sandbox Code Playgroud)

我们得到逗号和空格但在最后一个链接后会有一个尾随逗号.

Nik*_*kiC 16

就像你一样,explode你可以implode再次:

$tags = explode(',', $arg);
foreach ($tags as &$tag) {
    $tag = '<a href="' . $u . 'tag/' . $tag . '/" title="' . $tag . '">' . $tag . '</a>';
}

return implode(', ', $tags);
Run Code Online (Sandbox Code Playgroud)

  • @med:`&`表示你通过引用迭代.这样你就可以修改`$ tag`,并且`$ tags`数组中的元素也会被修改. (2认同)

pro*_*son 0

最简单的方法是将 html 放入一个数组(每个标签链接是一个数组元素),然后内爆,...

if ( $arg == '' ) {

    return '';

} else {

    $tags_arr = explode( ',' , $arg );
    $tags  = array();
    $tagtpl = '<a href="%s" title="%s">%s</a>';

    foreach ( $tags_arr as $tag ) {
        $url = $u . 'tag/' . $tag . '/';
        $tags[] = sprintf($tagtpl, $url, $tag, $tag);

    }

    return implode(', ', $tags);

}
Run Code Online (Sandbox Code Playgroud)