php - Remove   from shortcode

admin2025-06-06  8

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');
转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1749182349a317049.html

最新回复(0)