最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

php - Remove   from shortcode

matteradmin6PV0评论

I'm not sure why I can't get this to work. I'm trying to remove the   that is added inside this shortcode...

[box] Text [/box]

Which results in this HTML output:

<div class="box">&nbsp; Text &nbsp;</div>

I want to remove those spaces. I tried to usr str_replace, but it's not removing the &nbsp :

function infoButton($atts, $content = null) {
     extract( shortcode_atts( array(

    'class' => '',

    ), $atts ));

    $str = '<div class="box ' . $class . '">' . do_shortcode($content) . '</div>';
    $new_str = str_replace('&nbsp;','',$str);

    return $new_str; 

    }
    add_shortcode('box', 'infoButton');

I'm not sure why I can't get this to work. I'm trying to remove the &nbsp; that is added inside this shortcode...

[box] Text [/box]

Which results in this HTML output:

<div class="box">&nbsp; Text &nbsp;</div>

I want to remove those spaces. I tried to usr str_replace, but it's not removing the &nbsp :

function infoButton($atts, $content = null) {
     extract( shortcode_atts( array(

    'class' => '',

    ), $atts ));

    $str = '<div class="box ' . $class . '">' . do_shortcode($content) . '</div>';
    $new_str = str_replace('&nbsp;','',$str);

    return $new_str; 

    }
    add_shortcode('box', 'infoButton');
Share Improve this question asked Mar 14, 2016 at 21:54 LBFLBF 5393 gold badges11 silver badges28 bronze badges 3
  • 1 Could you use PHP trim()? – Howdy_McGee Commented Mar 14, 2016 at 21:58
  • I just tried return trim($str,"&nbsp;") but no change. – LBF Commented Mar 14, 2016 at 22:03
  • 1 You'd use $str = '<div class="box ' . $class . '">' . do_shortcode( trim( $content ) ) . '</div>'; – frogg3862 Commented Mar 14, 2016 at 23:04
Add a comment  | 

1 Answer 1

Reset to default 0

This could be due to the do_shortcode running through wpautop, see here for details on disabling that: https://stackoverflow/questions/5940854/disable-automatic-formatting-inside-wordpress-shortcodes

But as frogg3862 said, what you need to do instead of that is to just trim out the beginning and ending whitespace from $content to prevent the non-breaking space from being automatically added.

function infoButton($atts, $content = null) {
     extract( shortcode_atts( array(

    'class' => '',

    ), $atts ));

    $str = '<div class="box ' . $class . '">' . do_shortcode( trim( $content ) ) . '</div>';

    return $str; 

}
add_shortcode('box', 'infoButton');

Articles related to this article

Post a comment

comment list (0)

  1. No comments so far