PHP Classes

File: StringObscure.php

Recommend this page to a friend!
  Classes of Max Udaskin   String Obscure   StringObscure.php   Download  
File: StringObscure.php
Role: Class source
Content type: text/plain
Description: Obscures strings
Class: String Obscure
Obfuscate text strings by changing some characters
Author: By
Last change: Added feature to prevent null $obscure_char.
Date: 12 years ago
Size: 4,125 bytes
 

Contents

Class file image Download
<?php
class StringObscure
{
   
/**
     * Obscure String
     * Takes a string and changes some characters to obscure it
     * @param string $string // The string to obscure
     * @param int $num_to_obscure The number of characters in the string to obscure
     * @param string $obscure_char The string to obscure with (can be more than one character long)
     */
   
function obscure($string, $num_to_obscure = -1, $obscure_char = '*')
    {
        if(empty(
$obscure_char)) // Prevent $obscure_char from being empty
            
$obscure_char = '*';

        if(
$num_to_obscure == -1) { // If there is no input for the amount of characters to obscure
           
$num_to_obscure = round(strlen($string) / 2); // Obscure half of the characters
       
}
       
        if(
$num_to_obscure > strlen($string)) { // Make sure that the number to obscure is no greater than the length of the string
           
$num_to_obscure = strlen($string);
        }
        
       
$string = preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY); // Split string into array
       
$obscured = array();
        
        for(
$i = 0; $i < $num_to_obscure; $i++) { // Obscure characters
           
do {
               
$rand = rand(0, count($string));
            } while (
array_key_exists($rand, $obscured));
            
           
$string[$rand] = $obscure_char; // Obscure specific character
           
$obscured[$rand] = true; // Create key
       
}
        
        return
implode('', $string);
    }
   
   
/**
     * Obscure String w/Percentage
     * Takes a string and changes some characters to obscure it using a percentage of the string length
     * @param string $string // The string to obscure
     * @param int $pct_to_obscure The percentage of characters in the string to obscure
     * @param string $obscure_char The string to obscure with (can be more than one character long)
     */
   
function obscurePercentage($string, $pct_to_obscure = -1, $obscure_char = '*')
    {
        if(empty(
$obscure_char)) // Prevent $obscure_char from being empty
            
$obscure_char = '*';

        if(
$pct_to_obscure == -1) { // If there is no input for the amount of characters to obscure
           
$num_to_obscure = round(strlen($string) / 2); // Obscure half of the characters
       
} else {
            if(
$pct_to_obscure > 100) { // Make sure that the percentage is 100% or less
               
$pct_to_obscure = 100;
            } else {
                if(
$pct_to_obscure < 0) { // Make sure that the percentage is 0% or greater
                   
$pct_to_obscure = 0;
                }
            }
           
$pct_to_obscure = $pct_to_obscure / 100; // Turn the percentage into a decimal
           
$num_to_obscure = round(strlen($string) * $pct_to_obscure); // Calculate the number of characters to be obscured
       
}
        
       
$string = preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY); // Split string into array
       
$obscured = array();
        
        for(
$i = 0; $i < $num_to_obscure; $i++) { // Obscure characters
           
do {
               
$rand = rand(0, count($string));
            } while (
array_key_exists($rand, $obscured));
            
           
$string[$rand] = $obscure_char; // Obscure specific character
           
$obscured[$rand] = true; // Create key
       
}
        
        return
implode('', $string);
    }
}

// Examples


$str = 'Random String to be obscured...';

echo
'String before obscuring: ' . $str; // Outputs string, unaltered
echo 'String after obscuring: ' . stringObscure::obscure($str); // Outputs string with half of the characters obscured
echo 'String after obscuring: ' . stringObscure::obscure($str, 10); // Outputs string with ten of the characters obscured
echo 'String after obscuring: ' . stringObscure::obscure($str, 7, '-'); // Outputs string with seven of the characters changed to -
echo 'String after obscuring: ' . stringObscure::obscurePercentage($str, 25); // Outputs string with 25 percent of the characters obscured