Outils pour utilisateurs

Outils du site


tips_informatiques:programmation:php:code

startWith

    /**
     * Tests if a string starts with a given string
     *
     * @param     string
     * @param     string
     * @return    bool
     */
    function startWith($string, $start)
    {
        return strpos($string, $start) === 0;
    }

endWith

    /**
     * Tests if a string ends with the given string
     *
     * @param     string
     * @param     string
     * @return    bool
     */
    function endWith($string, $end)
    {
        return strrpos($string, $end) === strlen($string) - strlen($end);
    }

debug

class DebugTool
{
    public static function show($object, $title = null, $backtrace_index = 0)
    {
        echo '<div class="debug">';
 
        $calledFrom = debug_backtrace();
        echo '<strong>' . $calledFrom[$backtrace_index]['file'] . '</strong>';
        echo ' (line <strong>' . $calledFrom[$backtrace_index]['line'] . '</strong>)';
 
        if(isset($title))
        {
            echo '<h3>' . $title . '</h3>';
        }
 
        echo('<pre>');
        if(is_array($object))
        {
            print_r($object);
        }
        elseif(is_a($object, 'DOMDocument'))
        {
            $object->formatOutput = true;
            $xml_string = $object->saveXML();
            echo htmlentities($xml_string);
        }
        elseif(is_a($object, 'DOMNodeList') || is_a($object, 'DOMElement'))
        {
            $dom = new DOMDocument();
            $debugElement = $dom->createElement('debug');
            $dom->appendChild($debugElement);
 
            if(is_a($object, 'DOMNodeList'))
            {
                foreach ($object as $node) 
                {
                	$node = $dom->importNode($node, true);
                	$debugElement->appendChild($node);
                }
            }
            elseif(is_a($object, 'DOMElement'))
            {
                $node = $dom->importNode($object, true);
                $debugElement->appendChild($node);
            }
 
            $dom->formatOutput = true;
            $xml_string = $dom->saveXML();
            echo htmlentities($xml_string);
        }
        elseif(is_object($object))
        {
            echo get_class($object);
        }
        else 
        {
            echo $object;
        }
 
        echo('</pre>');
        echo '</div>';
    }
} 
 
/*******************************************************************/
/***** GLOBAL FUNCTIONS ********************************************/
/*******************************************************************/
 
function debug($object, $title = null)
{
    DebugTool :: show($object, $title, 1);
}

to_db_date

/**
* Converts a UNIX timestamp (as returned by time()) to a datetime string
* for use in SQL queries.
* @param int $date The date as a UNIX timestamp.
* @return string The date in datetime format.
*/
static function to_db_date($date)
{
    if (isset($date))
    {
        return date('Y-m-d H:i:s', $date);
    }
    else
    {
        return null;
    }
}

from_db_date

/**
* Converts a datetime value (as retrieved from the database) to a UNIX
* timestamp (as returned by time()).
* @param string $date The date as a UNIX timestamp.
* @return int The date as a UNIX timestamp.
*/
static function from_db_date($date)
{
    if (isset ($date))
    {
        return strtotime($date);
    }
    else
    {
        return null;
    }
}

get_value_between_chars

/**
 * Return the string found between two characters. If an index is given, it returns the
 * value at the index position
 * 
 * @param string $opening_char
 * @param string $closing_char
 * @param int $index 0 based index
 * @return string or null
 */
function get_value_between_chars($haystack, $index = 0, $opening_char = '[', $closing_char = ']')
{
    $offset = 0;
    $found = true;
    $value = null;
 
    for ($i = 0; $i < $index + 1; $i++)
    {
        $op_pos = strpos($haystack, $opening_char, $offset);
        if($op_pos !== false)
        {
            $cl_pos = strpos($haystack, $closing_char, $op_pos + 1);
 
            if($cl_pos !== false)
            {
                $value = substr($haystack, $op_pos + 1, $cl_pos - $op_pos - 1);
                $offset = $cl_pos + 1;
            }
            else
            {
                $found = false;
                break;
            }
        }
        else
        {
            $found = false;
            break;
        }
    }
 
    if($found)
    {
        return $value;
    }
    else
    {
        return null;
    }
}

to_multilevel_array

/**
 * Build an array from a list of strings
 * 
 * E.g: Array with the following strings:
 * 
 * 		'general_description[0][0][string]'
 * 		'general_description[0][1][string]'
 * 		'general_description[1][0][string]'
 * 
 * @param array $strings Array of (strings => value) pairs to merge into a multilevel array
 * @param string $opening_char
 * @param string $closing_char
 */
public static function to_multilevel_array($strings, $opening_char = '[', $closing_char = ']')
{
    $array = array();
 
    foreach ($strings as $string => $value) 
    {
        self :: set_next_level_array($array, $string, $value, $opening_char, $closing_char);   
    }
 
    return $array;
}
 
private static function set_next_level_array(&$container_array, $string, $value, $opening_char = '[', $closing_char = ']')    
{
    $key = self :: get_value_between_chars($string, 0, $opening_char, $closing_char);
    $sub_string = substr($string, strpos($string, $closing_char) + 1);
 
    if(isset($sub_string) && strlen($sub_string) > 0)
    {
        if(isset($container_array[$key]))
        {
            $sub_array = $container_array[$key];
        }
        else
        {
            $sub_array = array();
        }
 
        self :: set_next_level_array($sub_array, $sub_string, $value, $opening_char, $closing_char);
 
        $container_array[$key] = $sub_array;
    }
    else
    {
        if(isset($container_array[$key]))
        {
            $container_array[$key] = array_merge($container_array[$key], $value);
        }
        else
        {
            $container_array[$key] = $value;
        }
    }
}
tips_informatiques/programmation/php/code.txt · Dernière modification: 2009/08/12 00:00 (modification externe)