/home/mjc1/public_html/phpMyAdmin/libraries/string.lib.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Specialized String Functions for phpMyAdmin
 *
 * Defines a set of function callbacks that have a pure C version available if
 * the "ctype" extension is available, but otherwise have PHP versions to use
 * (that are slower).
 *
 * The SQL Parser code relies heavily on these functions.
 *
 * @todo a .lib filename should not have code in main(), split or rename file
 * @package PhpMyAdmin-String
 */
if (! defined('PHPMYADMIN')) {
    exit;
}

/**
 * Load proper code for handling input.
 */
if (@function_exists('mb_strlen')) {
    
mb_internal_encoding('utf-8');
    include 
'./libraries/string_mb.lib.php';
} else {
    include 
'./libraries/string_native.lib.php';
}

/**
 * Load ctype handler.
 */
if (@extension_loaded('ctype')) {
    include 
'./libraries/string_type_ctype.lib.php';
} else {
    include 
'./libraries/string_type_native.lib.php';
}

/**
 * Checks if a given character position in the string is escaped or not
 *
 * @param string  $string string to check for
 * @param integer $pos    the character to check for
 * @param integer $start  starting position in the string
 *
 * @return boolean  whether the character is escaped or not
 */
function PMA_STR_charIsEscaped($string$pos$start 0)
{
    
$pos max(intval($pos), 0);
    
$start max(intval($start), 0);
    
$len PMA_strlen($string);
    
// Base case:
    // Check for string length or invalid input or special case of input
    // (pos == $start)
    
if ($pos <= $start || $len <= max($pos$start)) {
        return 
false;
    }

    
$pos--;
    
$escaped     false;
    while (
$pos >= $start && PMA_substr($string$pos1) == '\\') {
        
$escaped = !$escaped;
        
$pos--;
    } 
// end while

    
return $escaped;
// end of the "PMA_STR_charIsEscaped()" function


/**
 * Checks if a number is in a range
 *
 * @param integer $num   number to check for
 * @param integer $lower lower bound
 * @param integer $upper upper bound
 *
 * @return boolean  whether the number is in the range or not
 */
function PMA_STR_numberInRangeInclusive($num$lower$upper)
{
    return (
$num >= $lower && $num <= $upper);
// end of the "PMA_STR_numberInRangeInclusive()" function

/**
 * Checks if a character is an SQL identifier
 *
 * @param string  $c            character to check for
 * @param boolean $dot_is_valid whether the dot character is valid or not
 *
 * @return boolean  whether the character is an SQL identifier or not
 */
function PMA_STR_isSqlIdentifier($c$dot_is_valid false)
{
    return (
PMA_STR_isAlnum($c)
        || (
$ord_c ord($c)) && $ord_c >= 192 && $ord_c != 215 && $ord_c != 249
        
|| $c == '_'
        
|| $c == '$'
        
|| ($dot_is_valid != false && $c == '.'));
// end of the "PMA_STR_isSqlIdentifier()" function

?>