Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
tips_informatiques:programmation:php:code [2009/07/17 10:14] nico |
tips_informatiques:programmation:php:code [2009/08/12 00:00] (Version actuelle) |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== function startWith ====== | + | ====== startWith ====== |
| <code php> | <code php> | ||
| /** | /** | ||
| Ligne 14: | Ligne 14: | ||
| </code> | </code> | ||
| - | ====== function endWith ====== | + | ====== endWith ====== |
| <code php> | <code php> | ||
| /** | /** | ||
| Ligne 29: | Ligne 29: | ||
| </code> | </code> | ||
| - | ====== function debug ====== | + | ====== debug ====== |
| <code php> | <code php> | ||
| - | function debug($object) | + | class DebugTool |
| { | { | ||
| - | echo '<div>'; | + | public static function show($object, $title = null, $backtrace_index = 0) |
| - | + | ||
| - | $calledFrom = debug_backtrace(); | + | |
| - | echo '<strong>' . $calledFrom[0]['file'] . '</strong>'; | + | |
| - | echo ' (line <strong>' . $calledFrom[0]['line'] . '</strong>)'; | + | |
| - | + | ||
| - | echo('<pre>'); | + | |
| - | if(is_array($object)) | + | |
| { | { | ||
| - | print_r($object); | + | echo '<div class="debug">'; |
| - | } | + | |
| - | elseif(is_a($object, 'DOMDocument')) | + | $calledFrom = debug_backtrace(); |
| - | { | + | echo '<strong>' . $calledFrom[$backtrace_index]['file'] . '</strong>'; |
| - | $object->formatOutput = true; | + | echo ' (line <strong>' . $calledFrom[$backtrace_index]['line'] . '</strong>)'; |
| - | $xml_string = $object->saveXML(); | + | |
| - | echo htmlentities($xml_string); | + | if(isset($title)) |
| - | } | + | { |
| - | elseif(is_a($object, 'DOMNodeList') || is_a($object, 'DOMElement')) | + | echo '<h3>' . $title . '</h3>'; |
| - | { | + | } |
| - | $dom = new DOMDocument(); | + | |
| - | $debugElement = $dom->createElement('debug'); | + | |
| - | $dom->appendChild($debugElement); | + | |
| | | ||
| - | if(is_a($object, 'DOMNodeList')) | + | echo('<pre>'); |
| + | if(is_array($object)) | ||
| { | { | ||
| - | foreach ($object as $node) | + | 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')) | ||
| { | { | ||
| - | $node = $dom->importNode($node, true); | + | foreach ($object as $node) |
| - | $debugElement->appendChild($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_a($object, 'DOMElement')) | + | elseif(is_object($object)) |
| { | { | ||
| - | $node = $dom->importNode($object, true); | + | echo get_class($object); |
| - | $debugElement->appendChild($node); | + | } |
| + | else | ||
| + | { | ||
| + | echo $object; | ||
| } | } | ||
| | | ||
| - | $dom->formatOutput = true; | + | echo('</pre>'); |
| - | $xml_string = $dom->saveXML(); | + | echo '</div>'; |
| - | echo htmlentities($xml_string); | + | |
| } | } | ||
| - | elseif(is_object($object)) | + | } |
| - | { | + | |
| - | echo get_class($object); | + | /*******************************************************************/ |
| - | } | + | /***** GLOBAL FUNCTIONS ********************************************/ |
| - | else | + | /*******************************************************************/ |
| - | { | + | |
| - | echo $object; | + | function debug($object, $title = null) |
| - | } | + | { |
| - | echo('</pre>'); | + | DebugTool :: show($object, $title, 1); |
| - | + | ||
| - | echo '</div>'; | + | |
| } | } | ||
| </code> | </code> | ||
| - | ====== function to_db_date ====== | + | ====== to_db_date ====== |
| <code php> | <code php> | ||
| /** | /** | ||
| Ligne 109: | Ligne 126: | ||
| </code> | </code> | ||
| - | ====== function from_db_date ====== | + | ====== from_db_date ====== |
| <code php> | <code php> | ||
| /** | /** | ||
| Ligne 129: | Ligne 146: | ||
| } | } | ||
| </code> | </code> | ||
| + | |||
| + | |||
| + | ====== get_value_between_chars ====== | ||
| + | <code php> | ||
| + | /** | ||
| + | * 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; | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ====== to_multilevel_array ====== | ||
| + | |||
| + | <code php> | ||
| + | /** | ||
| + | * 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; | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||