Remove Whitespace from Function Output

In WordPress, there are many functions which output things for you. For example, wp_list_pages() outputs a list of all your published pages. The HTML markup it spits out is pretty nicely formatted (meaning: has line breaks and indenting).

There are some circumstances where all that "whitespace" in the formatting is undesirable. Like 1) it's all the more characters to deliver and 2) closing "the gap" in older versions of IE.

If the function supports a way to return a string (rather than immediately echo it), you can use a regex to remove the space:

   echo preg_replace('/>\s+</m', '><', wp_list_pages('echo=0'));


  1. Benjamin Mayo
    Permalink to comment#

    Or you can just str_replace(‘ ‘, ”, function_to_call()), at about double the speed of a regex.

    • Joseph Silber
      Permalink to comment#

      This would delete all whitespace characters, rendering your code useless. e.g.:
      <a href="#">Whatever</a>
      will turn into
      which is pretty much useless.

  2. Kevin
    Permalink to comment#

    Cool hacks… These should be added to

  3. Php Programmer
    Permalink to comment#

    Good job…. often an XML input file contains insignificant whitespace like pretty-printed element structures. This is nice to look at, but it adds to the byte length of the file in memory (processing time) and often we don’t want to transfer such whitespace to the output file.

Leave a Comment

Posting Code

We highly encourage you to post problematic HTML/CSS/JavaScript over on CodePen and include the link in your post. It's much easier to see, understand, and help with when you do that.

Markdown is supported, so you can write inline code like `<div>this</div>` or multiline blocks of code in triple backtick fences like this:

  function example() {
    element.innerHTML = "<div>code</div>";

We have a pretty good* newsletter.