Monday, September 4th, 2006 (updated 5 Oct ’10)

PHPStringFun v1.2.1 (Free)

 

This widely-installed ExpressionEngine add-on is a general-use text-formatting plugin that enables access to PHP string functions without activating PHP in the template.

Why would you not want to activate PHP in your template? One important scenario for the plugin is that you actually have activated PHP, but set to parse at the input stage, while you need something else done in the same template requiring PHP to be set at the output stage. Also, people just like using it, particular in templates where not much PHP is needed.

The download file contains a version of the plugin for both EE v1.x and v2.x.

Threads at the ExpressionEngine Forums where PHPStringFun is mentioned as a solution:

Documentation

Tue 14 Sep ’10
11:23pm

Mike

When using the explode function how would print the array? The tag just outputs “array”

Tue 14 Sep ’10
11:39pm

ace@tidbits.com

This problem has come up before (see http://expressionengine.com/archived_forums/viewthread/144864/)—I’ll take a look and see if I can figure out what’s happening.

Tue 14 Sep ’10
11:54pm

Mike

Thanks Adam. I want to explode a custom field of ids (123|43|75) so I can use them separately. If the explode function returns an array I don’t understand how phpstringfun would handle that.

Wed 15 Sep ’10
12:11am

ace@tidbits.com

Yes, it would have to check whether the result is an array and if so, output it as an array, taking a new parameter as the separator character.

Wed 15 Sep ’10
12:00pm

ace@tidbits.com

Mike, I’ve updated the plugin to allow output from explode, but I think phpstringfun is not really worth using for that. To be honest, I never use the plugin myself. I find it easier to just use PHP wherever required in an EE template. The majority of my EE templates have PHP enabled.

I use explodes whenever necessary combined with foreaches. I generally keep PHP at the default output parsing stage, and if that makes a PHP variable inaccessible, I just embed a template and pass the PHP variable.

Wed 15 Sep ’10
1:31pm

Mike

Thanks Adam! I’ll give both a try

Wed 15 Sep ’10
6:21pm

Mike

Thanks Adam, I’ll try both methods.

Sun 26 Sep ’10
4:08pm

Dean

New to EE here, I am getting the error:

Fatal error: Call to a member function fetch_param() on a non-object in / [ …edited…] system/expressionengine/third_party/phpstringfun/pi.phpstringfun.php on line 36

My call looks like:

{exp:phpstringfun function=“ucwords”}{field_x}{/exp:phpstringfun}

What am I doing wrong?

Sat 2 Oct ’10
3:07am

Stephen

Hi Adam,

I\ve just upgraded PHPStringFun in EE2.1 from version 1.1 (EEv1) to version 1.2 (EEv1) and immediately got the same error as Dean mentions above on one of the pages of my site that uses this plugin:

Fatal error: Call to a member function fetch_param() on a non-object in /home/myaccount/public_html/mysystem/expressionengine/third_party/phpstringfun/pi.phpstringfun.php on line 36

Here’s the code I’m using in the template that’s causing this (which worked fine and without error with the previous version):

{exp:phpstringfun function=“urlencode”}http://www.mywebsite.co.uk{page_uri}{/exp:phpstringfun}

Not sure if this is a bug with the latest version, or if I’m doing something wrong with my code/tags that has now been tightened up on with the new version?

Thanks,

Stephen

Tue 5 Oct ’10
12:57am

Nik

I am also haveing problems with phpstringfun as the 2 users above:Fatal error: Call to a member function fetch_param() on a non-object in /home/myaccount/public_html/mysystem/expressionengine/third_party/phpstringfun/pi.phpstringfun.php on line 36

Tue 5 Oct ’10
10:04am

ace@tidbits.com

My apologies people, I’ve been swamped with work and didn’t have time to get to this.

Turns out I didn’t test the plugin properly in EE2. The fatal error is now fixed in v1.2.1.

Wed 6 Oct ’10
1:47am

Nik

Thanks Adam! Having issues downloading the new 1.2.1? I get the the agree button, then I get an url doesn’t exist error?

Wed 6 Oct ’10
7:06am

ace@tidbits.com

Oops, file renamed correctly.

Sun 28 Nov ’10
11:49pm

Bob

When I download the file, all I get is the EE1 version. I would love to get my hands on the EE2 version!

Thanks,
Bob

Thu 23 Dec ’10
2:45pm

Uno

Hi adam,

I would like to use str_replace. but I couldn’t find example.

{exp:phpstringfun function=“str_replace” par1=”.jpg”  par2=“_t.jpg”}{photo}{/exp:phpstringfun}

But it doesn’t work.
So, could you give me correct example?

Mon 10 Jan ’11
12:37pm

ace@tidbits.com

Uno, sorry for the delay in replying—I’ve been out of commission.

PHP’s String Replace function http://php.net/manual/en/function.str-replace.php) has as its parameters $search, $replace, $subject, so it would help to use the plugin’s reverse parameter then do as follows:

{exp:phpstringfun function=“str_replace” par1=“_t.jpg” par2=”.jpg” }{photo}{/exp:phpstringfun}

Sun 16 Jan ’11
12:24am

Claire

For some reason it doesn’t seem to be working with nesting. Am I doing something wrong?

{exp:phpstringfun function=“htmlentities”}{exp:phpstringfun function=“nl2br”}{title}{/exp:phpstringfun}{/exp:phpstringfun}

Sun 3 Apr ’11
10:03pm

Joff

Hi Adam,

I’m trying to use PHPStringFun (v1.2.1 on EE 2.x) on a segment in a title element, using the ucwords function, but it’s not applying anything:
{exp:phpstringfun function=“ucwords”}{segment_2}{/exp:phpstringfun}

I’ve changed the function to “strtoupper” and it works fine.  If I change the {segment_2} to a hardcoded string, e.g.:
{exp:phpstringfun function=“ucwords”}this is lowercase{/exp:phpstringfun}
then I get the correct desired result.

Any suggestions as to what I’m doing wrong?

Hopefully the solution is staring me in the face!

Fri 3 Jun ’11
10:24am

lets

I’m having the same problem as Clair, is there a way of chaining functions?

I’m trying to replace spaces with ‘-’ and make it lowercase, but just the closing tag is displayed.

Wed 15 Jun ’11
4:41pm

Dan

Just noticed that “addslashes” function doesn’t exist in this plugin, but “stripslashes’ is in there.

It was really easy to add it to the plugin.

Just thought you might want to update that little thing.

Wed 20 Jul ’11
8:33pm

Tom

This worked well for me but it would be really nice if it worked with nesting.

Fudged my way around it with what I needed to do but its ugly and I can see a situation arising where I will have to nest some of these functions and be SOL.

Mon 8 Aug ’11
9:25pm

Jeff

Desperately needs nesting..

Mon 15 Aug ’11
11:09pm

Tom Chapin

When I extracted the archive for phpstringfun 1.2.1, I was confused because there was only one file (“pi.phpstringfun.php”) contained inside and I couldn’t tell if it was the file for EE1 or EE2.

I went ahead and created a folder in my EE2 installation at /system/expressionengine/third_party/phpstringfun/ and I placed the pi.phpstringfun.php file there inside it. Everything seems to be working correctly when I tried it out.

Tue 20 Sep ’11
7:57am

Sten Van den Bergh

str_replace also doesn’t work for me. It replaces the whole word with the par2 parameter. So this code:

{exp:phpstringfun function=“str_replace” par1=“o” par2=”+” }hello world{/exp:phpstringfun}

outputs “+”

Wed 5 Oct ’11
3:53am

Allan White

A question about this plugin (and by extension, the PHP functions it enables): Can it encode/escape for Javascript? I need to inject some HTML into a JS function that’s part of an EECMS template, and it would be soooo slick to do it on the fly.  Example of the formatting here: http://www.htmlescape.net/stringescape_tool.html It seems different than HTML entity encoding. Thanks! Neat concept.

Sat 15 Oct ’11
7:49am

Chris

Explode won’t work with a array_index of 0 because 0 is false…

change:
if ($array_index)
to:
if (isset($array_index))

Somewhere…

Sat 15 Oct ’11
7:51am

Chris

Also,

Be aware that ee trims the params or something so par1=” : ” won’t work :(

Wed 29 Aug ’12
9:53pm

Nathan Pitman

Hi there, I’ve been using this plug-in for a while on a site but a recent server upgrade to a more current version of PHP has the substr_count function playing up. I’ve not been able to nail the exact cause but it seems that the addition of the offset parameter might have something to do with it. :)

Thu 25 Oct ’12
12:00pm

Frank Heijkamp

I had problems with the plugin under EE version 2, had to comment all version 1 code out. Is it only me having this problem?
  //  global $TMPL;
  //  $version = “”;
  //  if ( $TMPL )
  //  {
  //      $version = “1”;
  //  }
  //  else
  //  {
  //      $version = “2”;
  //  }
  //  if ($version == “2”)
  //  {
  //      keep EE version 2 code
        $this->EE =& get_instance();
        $TMPL = $this->EE->TMPL;
  //  }

Post a comment

Name:

Email:

Location:

URL:

Your comment:

Please answer the following question to assure your intentions are honorable: Enter the last name of a famous silent-movie era comedian named Charlie. (7 characters required)

Remember my personal information
Notify me of follow-up comments?