Coming from a .NET background, I wanted to create a set of easily used PHP string functions similar to those I use in .NET. The following class encapsulates many common string functions that I use.
- Starts With - does string start with searched value
- Ends With - does string end with searched value
- Length - get length of string
- Sub String - get a sub string
- Replace - replace a value in a string with a new value
- Contains - check if a string contains a value
- Is Empty Or Null - check if a string is either empty or null
- Empty And Trim - sets a null string to an empty string and trims trailing spaces from a non-null string
- Is Valid Email - check if a string is a valid email
- Remove Html - remove html characters from a string
- Get Extension - gets the extensions of a filename represented as a string
- JSON Encode - encode an object into its JSON string representation
- JSON Decode - decodes a JSON encoded string into an object
- Hash String - Hash a string
- Random String - Get a random alpha numeric string
- Get Guid String - Get a new Guid value as a string
class StringFunctions
{
static function StartsWith($value, $searchedValue)
{
return !strncmp($value, $searchedValue, strlen($searchedValue));
}
static function EndsWith($value, $searchedValue)
{
$length = strlen($searchedValue);
if ($length == 0)
{
return true;
}
return (substr($value, -$length) === $searchedValue);
}
static function Length($source)
{
if (self::EmptyAndTrim($source) == false)
{
return strlen($source);
}
return 0;
}
static function SubString($source, $startIndex, $length)
{
if (self::IsEmptyOrNull($source) == false)
{
//this only works for index == 0
if (self::Length($source) < $length)
{
$length == self::Length($source);
}
return substr($source, $startIndex, $length);
}
return $source;
}
static function RemoveHtml($source, $keepLineBreaks = true)
{
$source = self::EmptyAndTrim($source);
if (self::IsEmptyOrNull($source) == false)
{
$allowableTags = "";
if ($keepLineBreaks == true)
{
$allowableTags = "<p><br>";
}
$source = strip_tags($source, $allowableTags);
if ($keepLineBreaks == true)
{
//remove beginning <p>
$source = self::Replace($source, "<p>", "");
//replace </p>, <br>, <br/>, <br /> with new line
$source = self::Replace($source, "</p>", "\r\n");
$source = self::Replace($source, "<br>", "\r\n");
$source = self::Replace($source, "<br/>", "\r\n");
$source = self::Replace($source, "<br />", "\r\n");
}
}
return $source;
}
static function Replace($source, $searchPhrase, $replacementValue)
{
$source = self::EmptyAndTrim($source);
return str_replace ($searchPhrase, $replacementValue, $source);
}
static function Contains($string, $substring)
{
$pos = strpos($string, $substring);
if ($pos === false)
{
// string needle NOT found in haystack
return false;
}
else
{
// string needle found in haystack
return true;
}
}
static function IsValidEmail($value)
{
if (self::isEmptyOrNull($value) == false)
{
if (filter_var($value, FILTER_VALIDATE_EMAIL))
{
return true;
}
}
return false;
}
static function IsEmptyOrNull($str)
{
if ($str === null || $str == "")
{
return true;
}
return false;
}
static function EmptyAndTrim($str)
{
if (self::IsEmptyOrNull($str))
{
$str = "";
}
$str = trim($str);
return $str;
}
static function GetExtension($str)
{
$i = strrpos($str,".");
if (!$i)
{
return "";
}
$l = strlen($str) - $i;
$ext = substr($str, $i+1, $l);
return $ext;
}
static function JSONEncode($obj)
{
return json_encode($obj);
}
static function JSONDecode($str, $toArray)
{
return json_decode($str, $toArray);
}
static function HashString($str, $salt)
{
return hash('sha512', $str . $salt);
}
static function RandomString($length)
{
if ($length > 62)
{
$length = 62;
}
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
return substr(str_shuffle($chars), 0, $length);
}
static function GetGuidString()
{
$guid = com_create_guid();
$guid = str_replace("{", "", $guid);
$guid = str_replace("}", "", $guid);
return $guid;
}
}