Fix wordwrap. It wasn't matching Zend.
[hiphop-php.git] / hphp / system / idl / string.idl.json
blob161fa7b66fab92a86aa24a73d2c74d616c0a1128
2     "preamble": "",
3     "consts": [
4     ],
5     "funcs": [
6         {
7             "name": "addcslashes",
8             "desc": "Returns a string with backslashes before characters that are listed in charlist parameter.",
9             "flags": [
10             ],
11             "return": {
12                 "type": "String",
13                 "desc": "Returns the escaped string."
14             },
15             "args": [
16                 {
17                     "name": "str",
18                     "type": "String",
19                     "desc": "The string to be escaped."
20                 },
21                 {
22                     "name": "charlist",
23                     "type": "String",
24                     "desc": "A list of characters to be escaped. If charlist contains characters \\n, \\r etc., they are converted in C-like style, while other non-alphanumeric characters with ASCII codes lower than 32 and higher than 126 converted to octal representation.\n\nWhen you define a sequence of characters in the charlist argument make sure that you know what characters come between the characters that you set as the start and end of the range.\n\nAlso, if the first character in a range has a higher ASCII value than the second character in the range, no range will be constructed. Only the start, end and period characters will be escaped. Use the ord() function to find the ASCII value for a character.\n\n\n\nBe careful if you choose to escape characters 0, a, b, f, n, r, t and v. They will be converted to \\0, \\a, \\b, \\f, \\n, \\r, \\t and \\v. In PHP \\0 (NULL), \\r (carriage return), \\n (newline), \\f (form feed), \\v (vertical tab) and \\t (tab) are predefined escape sequences, while in C all of these are predefined escape sequences."
25                 }
26             ]
27         },
28         {
29             "name": "stripcslashes",
30             "desc": "Returns a string with backslashes stripped off. Recognizes C-like \\n, \\r ..., octal and hexadecimal representation.",
31             "flags": [
32             ],
33             "return": {
34                 "type": "String",
35                 "desc": "Returns the unescaped string."
36             },
37             "args": [
38                 {
39                     "name": "str",
40                     "type": "String",
41                     "desc": "The string to be unescaped."
42                 }
43             ]
44         },
45         {
46             "name": "addslashes",
47             "desc": "Returns a string with backslashes before characters that need to be quoted in database queries etc. These characters are single quote ('), double quote (\"), backslash (\\) and NUL (the NULL byte).\n\nAn example use of addslashes() is when you're entering data into a database. For example, to insert the name O'reilly into a database, you will need to escape it. It's highly recommended to use DBMS specific escape function (e.g. mysqli_real_escape_string() for MySQL or pg_escape_string() for PostgreSQL), but if the DBMS you're using does't have an escape function and the DBMS uses \\ to escape special chars, you can use this function. This would only be to get the data into the database, the extra \\ will not be inserted. Having the PHP directive magic_quotes_sybase set to on will mean ' is instead escaped with another '.\n\nThe PHP directive magic_quotes_gpc is on by default, and it essentially runs addslashes() on all GET, POST, and COOKIE data. Do not use addslashes() on strings that have already been escaped with magic_quotes_gpc as you'll then do double escaping. The function get_magic_quotes_gpc() may come in handy for checking this.",
48             "flags": [
49             ],
50             "return": {
51                 "type": "String",
52                 "desc": "Returns the escaped string."
53             },
54             "args": [
55                 {
56                     "name": "str",
57                     "type": "String",
58                     "desc": "The string to be escaped."
59                 }
60             ]
61         },
62         {
63             "name": "stripslashes",
64             "desc": "Un-quotes a quoted string.\n\nIf magic_quotes_sybase is on, no backslashes are stripped off but two apostrophes are replaced by one instead.\n\nAn example use of stripslashes() is when the PHP directive magic_quotes_gpc is on (it's on by default), and you aren't inserting this data into a place (such as a database) that requires escaping. For example, if you're simply outputting data straight from an HTML form.",
65             "flags": [
66             ],
67             "return": {
68                 "type": "String",
69                 "desc": "Returns a string with backslashes stripped off. (\\' becomes ' and so on.) Double backslashes (\\\\) are made into a single backslash (\\)."
70             },
71             "args": [
72                 {
73                     "name": "str",
74                     "type": "String",
75                     "desc": "The input string."
76                 }
77             ]
78         },
79         {
80             "name": "bin2hex",
81             "desc": "Returns an ASCII string containing the hexadecimal representation of str. The conversion is done byte-wise with the high-nibble first.",
82             "flags": [
83             ],
84             "return": {
85                 "type": "String",
86                 "desc": "Returns the hexadecimal representation of the given string."
87             },
88             "args": [
89                 {
90                     "name": "str",
91                     "type": "String",
92                     "desc": "A character."
93                 }
94             ]
95         },
96         {
97             "name": "hex2bin",
98             "desc": "Returns an ASCII string containing the binary representation of hexidecimal str.",
99             "flags": [
100             ],
101             "return": {
102                 "type": "Variant",
103                 "hint": 7,
104                 "desc": "Returns the binary representation of the given hexidecimal string or FALSE on failure."
105             },
106             "args": [
107                 {
108                     "name": "str",
109                     "type": "String",
110                     "desc": "A character."
111                 }
112             ]
113         },
114         {
115             "name": "nl2br",
116             "desc": "Returns string with '<br \/>' or '<br>' inserted before all newlines.",
117             "flags": [
118             ],
119             "return": {
120                 "type": "String",
121                 "desc": "Returns the altered string."
122             },
123             "args": [
124                 {
125                     "name": "str",
126                     "type": "String",
127                     "desc": "The input string."
128                 }
129             ]
130         },
131         {
132             "name": "quotemeta",
133             "desc": "Returns a version of str with a backslash character (\\) before every character that is among these: . \\ + * ? [ ^ ] ( $ )",
134             "flags": [
135             ],
136             "return": {
137                 "type": "String",
138                 "desc": "Returns the string with meta characters quoted."
139             },
140             "args": [
141                 {
142                     "name": "str",
143                     "type": "String",
144                     "desc": "The input string."
145                 }
146             ]
147         },
148         {
149             "name": "str_shuffle",
150             "flags": [
151             ],
152             "return": {
153                 "type": "String",
154                 "desc": "Returns the shuffled string."
155             },
156             "args": [
157                 {
158                     "name": "str",
159                     "type": "String",
160                     "desc": "The input string."
161                 }
162             ]
163         },
164         {
165             "name": "strrev",
166             "desc": "Returns string, reversed.",
167             "flags": [
168             ],
169             "return": {
170                 "type": "String",
171                 "desc": "Returns the reversed string."
172             },
173             "args": [
174                 {
175                     "name": "str",
176                     "type": "String",
177                     "desc": "The string to be reversed."
178                 }
179             ]
180         },
181         {
182             "name": "strtolower",
183             "desc": "Returns string with all alphabetic characters converted to lowercase.\n\nNote that 'alphabetic' is determined by the current locale. This means that in i.e. the default \"C\" locale, characters such as umlaut-A () will not be converted.",
184             "flags": [
185             ],
186             "return": {
187                 "type": "String",
188                 "desc": "Returns the lowercased string."
189             },
190             "args": [
191                 {
192                     "name": "str",
193                     "type": "String",
194                     "desc": "The input string."
195                 }
196             ]
197         },
198         {
199             "name": "strtoupper",
200             "desc": "Returns string with all alphabetic characters converted to uppercase.\n\nNote that 'alphabetic' is determined by the current locale. For instance, in the default \"C\" locale characters such as umlaut-a () will not be converted.",
201             "flags": [
202             ],
203             "return": {
204                 "type": "String",
205                 "desc": "Returns the uppercased string."
206             },
207             "args": [
208                 {
209                     "name": "str",
210                     "type": "String",
211                     "desc": "The input string."
212                 }
213             ]
214         },
215         {
216             "name": "ucfirst",
217             "desc": "Returns a string with the first character of str capitalized, if that character is alphabetic.\n\nNote that 'alphabetic' is determined by the current locale. For instance, in the default \"C\" locale characters such as umlaut-a () will not be converted.",
218             "flags": [
219             ],
220             "return": {
221                 "type": "String",
222                 "desc": "Returns the resulting string."
223             },
224             "args": [
225                 {
226                     "name": "str",
227                     "type": "String",
228                     "desc": "The input string."
229                 }
230             ]
231         },
232         {
233             "name": "lcfirst",
234             "desc": "Returns a string with the first character of str , lowercased if that character is alphabetic.\n\nNote that 'alphabetic' is determined by the current locale. For instance, in the default \"C\" locale characters such as umlaut-a (\u00e4) will not be converted.",
235             "flags": [
236             ],
237             "return": {
238                 "type": "String",
239                 "desc": "Returns the resulting string."
240             },
241             "args": [
242                 {
243                     "name": "str",
244                     "type": "String",
245                     "desc": "The input string."
246                 }
247             ]
248         },
249         {
250             "name": "ucwords",
251             "desc": "Returns a string with the first character of each word in str capitalized, if that character is alphabetic.\n\nThe definition of a word is any string of characters that is immediately after a whitespace (These are: space, form-feed, newline, carriage return, horizontal tab, and vertical tab).",
252             "flags": [
253             ],
254             "return": {
255                 "type": "String",
256                 "desc": "Returns the modified string."
257             },
258             "args": [
259                 {
260                     "name": "str",
261                     "type": "String",
262                     "desc": "The input string."
263                 }
264             ]
265         },
266         {
267             "name": "strip_tags",
268             "desc": "This function tries to return a string with all NUL bytes, HTML and PHP tags stripped from a given str. It uses the same tag stripping state machine as the fgetss() function.",
269             "flags": [
270             ],
271             "return": {
272                 "type": "String",
273                 "desc": "Returns the stripped string."
274             },
275             "args": [
276                 {
277                     "name": "str",
278                     "type": "String",
279                     "desc": "The input string."
280                 },
281                 {
282                     "name": "allowable_tags",
283                     "type": "String",
284                     "value": "\"\"",
285                     "desc": "You can use the optional second parameter to specify tags which should not be stripped.\n\nHTML comments and PHP tags are also stripped. This is hardcoded and can not be changed with allowable_tags."
286                 }
287             ]
288         },
289         {
290             "name": "trim",
291             "desc": "This function returns a string with whitespace stripped from the beginning and end of str. Without the second parameter, trim() will strip these characters: \" \" (ASCII 32 (0x20)), an ordinary space. \"\\t\" (ASCII 9 (0x09)), a tab. \"\\n\" (ASCII 10 (0x0A)), a new line (line feed). \"\\r\" (ASCII 13 (0x0D)), a carriage return. \"\\0\" (ASCII 0 (0x00)), the NUL-byte. \"\\x0B\" (ASCII 11 (0x0B)), a vertical tab.",
292             "flags": [
293             ],
294             "return": {
295                 "type": "String",
296                 "desc": "The trimmed string."
297             },
298             "args": [
299                 {
300                     "name": "str",
301                     "type": "String",
302                     "desc": "The string that will be trimmed."
303                 },
304                 {
305                     "name": "charlist",
306                     "type": "String",
307                     "value": "k_HPHP_TRIM_CHARLIST",
308                     "desc": "Optionally, the stripped characters can also be specified using the charlist parameter. Simply list all characters that you want to be stripped. With .. you can specify a range of characters."
309                 }
310             ]
311         },
312         {
313             "name": "ltrim",
314             "desc": "Strip whitespace (or other characters) from the beginning of a string.",
315             "flags": [
316             ],
317             "return": {
318                 "type": "String",
319                 "desc": "This function returns a string with whitespace stripped from the beginning of str. Without the second parameter, ltrim() will strip these characters: \" \" (ASCII 32 (0x20)), an ordinary space. \"\\t\" (ASCII 9 (0x09)), a tab. \"\\n\" (ASCII 10 (0x0A)), a new line (line feed). \"\\r\" (ASCII 13 (0x0D)), a carriage return. \"\\0\" (ASCII 0 (0x00)), the NUL-byte. \"\\x0B\" (ASCII 11 (0x0B)), a vertical tab."
320             },
321             "args": [
322                 {
323                     "name": "str",
324                     "type": "String",
325                     "desc": "The input string."
326                 },
327                 {
328                     "name": "charlist",
329                     "type": "String",
330                     "value": "k_HPHP_TRIM_CHARLIST",
331                     "desc": "You can also specify the characters you want to strip, by means of the charlist parameter. Simply list all characters that you want to be stripped. With .. you can specify a range of characters."
332                 }
333             ]
334         },
335         {
336             "name": "rtrim",
337             "desc": "This function returns a string with whitespace stripped from the end of str.\n\nWithout the second parameter, rtrim() will strip these characters: \" \" (ASCII 32 (0x20)), an ordinary space. \"\\t\" (ASCII 9 (0x09)), a tab. \"\\n\" (ASCII 10 (0x0A)), a new line (line feed). \"\\r\" (ASCII 13 (0x0D)), a carriage return. \"\\0\" (ASCII 0 (0x00)), the NUL-byte. \"\\x0B\" (ASCII 11 (0x0B)), a vertical tab.",
338             "flags": [
339             ],
340             "return": {
341                 "type": "String",
342                 "desc": "Returns the modified string."
343             },
344             "args": [
345                 {
346                     "name": "str",
347                     "type": "String",
348                     "desc": "The input string."
349                 },
350                 {
351                     "name": "charlist",
352                     "type": "String",
353                     "value": "k_HPHP_TRIM_CHARLIST",
354                     "desc": "You can also specify the characters you want to strip, by means of the charlist parameter. Simply list all characters that you want to be stripped. With .. you can specify a range of characters."
355                 }
356             ]
357         },
358         {
359             "name": "chop",
360             "flags": [
361             ],
362             "return": {
363                 "type": "String"
364             },
365             "args": [
366                 {
367                     "name": "str",
368                     "type": "String"
369                 },
370                 {
371                     "name": "charlist",
372                     "type": "String",
373                     "value": "k_HPHP_TRIM_CHARLIST"
374                 }
375             ]
376         },
377         {
378             "name": "explode",
379             "desc": "Returns an array of strings, each of which is a substring of string formed by splitting it on boundaries formed by the string delimiter.\nAlthough implode() can, for historical reasons, accept its parameters in either order, explode() cannot. You must ensure that the delimiter argument comes before the string argument.",
380             "flags": [
381             ],
382             "return": {
383                 "type": "Variant",
384                 "desc": "Returns an array of strings created by splitting the string parameter on boundaries formed by the delimiter.\n\nIf delimiter is an empty string (\"\"), explode() will return FALSE. If delimiter contains a value that is not contained in string and a negative limit is used, then an empty arraywill be returned, otherwise an array containing string will be returned."
385             },
386             "args": [
387                 {
388                     "name": "delimiter",
389                     "type": "String",
390                     "desc": "The boundary string."
391                 },
392                 {
393                     "name": "str",
394                     "type": "String",
395                     "desc": "The input string."
396                 },
397                 {
398                     "name": "limit",
399                     "type": "Int32",
400                     "value": "0x7FFFFFFF",
401                     "desc": "If limit is set and positive, the returned array will contain a maximum of limit elements with the last element containing the rest of string.\n\nIf the limit parameter is negative, all components except the last -limit are returned.\n\nIf the limit parameter is zero, then this is treated as 1."
402                 }
403             ]
404         },
405         {
406             "name": "implode",
407             "desc": "Join container elements with a glue string.\n\nimplode() can, for historical reasons, accept its parameters in either order. For consistency with explode(), however, it may be less confusing to use the documented order of arguments.",
408             "flags": [
409             ],
410             "return": {
411                 "type": "String",
412                 "desc": "Returns a string containing a string representation of all the array elements in the same order, with the glue string between each element."
413             },
414             "args": [
415                 {
416                     "name": "arg1",
417                     "type": "Variant",
418                     "desc": "Defaults to an empty string. This is not the preferred usage of implode() as glue would be the second parameter and thus, the bad prototype would be used."
419                 },
420                 {
421                     "name": "arg2",
422                     "type": "Variant",
423                     "value": "null_variant",
424                     "desc": "The array of strings to implode."
425                 }
426             ]
427         },
428         {
429             "name": "join",
430             "desc": "An alias for implode().",
431             "flags": [
432             ],
433             "return": {
434                 "type": "String"
435             },
436             "args": [
437                 {
438                     "name": "glue",
439                     "type": "Variant"
440                 },
441                 {
442                     "name": "pieces",
443                     "type": "Variant",
444                     "value": "null_variant"
445                 }
446             ]
447         },
448         {
449             "name": "str_split",
450             "desc": "Converts a string to an array.",
451             "flags": [
452                 "ZendParamMode"
453             ],
454             "return": {
455                 "type": "Variant",
456                 "desc": "If the optional split_length parameter is specified, the returned array will be broken down into chunks with each being split_length in length, otherwise each chunk will be one character in length.\n\nFALSE is returned if split_length is less than 1. If the split_length length exceeds the length of string, the entire string is returned as the first (and only) array element."
457             },
458             "args": [
459                 {
460                     "name": "str",
461                     "type": "String",
462                     "desc": "The input string."
463                 },
464                 {
465                     "name": "split_length",
466                     "type": "Int32",
467                     "value": "1",
468                     "desc": "Maximum length of the chunk."
469                 }
470             ]
471         },
472         {
473             "name": "chunk_split",
474             "desc": "Can be used to split a string into smaller chunks which is useful for e.g. converting base64_encode() output to match RFC 2045 semantics. It inserts end every chunklen characters.",
475             "flags": [
476             ],
477             "return": {
478                 "type": "Variant",
479                 "desc": "Returns the chunked string."
480             },
481             "args": [
482                 {
483                     "name": "body",
484                     "type": "String",
485                     "desc": "The string to be chunked."
486                 },
487                 {
488                     "name": "chunklen",
489                     "type": "Int32",
490                     "value": "76",
491                     "desc": "The chunk length."
492                 },
493                 {
494                     "name": "end",
495                     "type": "String",
496                     "value": "\"\\r\\n\"",
497                     "desc": "The line ending sequence."
498                 }
499             ]
500         },
501         {
502             "name": "strtok",
503             "desc": "strtok() splits a string (str) into smaller strings (tokens), with each token being delimited by any character from token. That is, if you have a string like \"This is an example string\" you could tokenize this string into its individual words by using the space character as the token.\n\nNote that only the first call to strtok uses the string argument. Every subsequent call to strtok only needs the token to use, as it keeps track of where it is in the current string. To start over, or to tokenize a new string you simply call strtok with the string argument again to initialize it. Note that you may put multiple tokens in the token parameter. The string will be tokenized when any one of the characters in the argument are found.",
504             "flags": [
505             ],
506             "return": {
507                 "type": "Variant",
508                 "desc": "A string token."
509             },
510             "args": [
511                 {
512                     "name": "str",
513                     "type": "String",
514                     "desc": "The string being split up into smaller strings (tokens)."
515                 },
516                 {
517                     "name": "token",
518                     "type": "Variant",
519                     "value": "null_variant",
520                     "desc": "The delimiter used when splitting up str."
521                 }
522             ]
523         },
524         {
525             "name": "str_replace",
526             "desc": "This function returns a string or an array with all occurrences of search in subject replaced with the given replace value.\n\nIf you don't need fancy replacing rules (like regular expressions), you should always use this function instead of ereg_replace() or preg_replace().\nIf search and replace are arrays, then str_replace() takes a value from each array and uses them to do search and replace on subject. If replace has fewer values than search, then an empty string is used for the rest of replacement values. If search is an array and replace is a string, then this replacement string is used for every value of search. The converse would not make sense, though.\n\nIf search or replace are arrays, their elements are processed first to last.",
527             "flags": [
528             ],
529             "return": {
530                 "type": "Variant",
531                 "desc": "This function returns a string or an array with the replaced values."
532             },
533             "args": [
534                 {
535                     "name": "search",
536                     "type": "Variant",
537                     "desc": "The value being searched for, otherwise known as the needle. An array may be used to designate multiple needles."
538                 },
539                 {
540                     "name": "replace",
541                     "type": "Variant",
542                     "desc": "The replacement value that replaces found search values. An array may be used to designate multiple replacements."
543                 },
544                 {
545                     "name": "subject",
546                     "type": "Variant",
547                     "desc": "The string or array being searched and replaced on, otherwise known as the haystack.\n\nIf subject is an array, then the search and replace is performed with every entry of subject, and the return value is an array as well."
548                 },
549                 {
550                     "name": "count",
551                     "type": "Variant",
552                     "value": "null",
553                     "desc": "If passed, this will hold the number of matched and replaced needles.",
554                     "ref": true
555                 }
556             ]
557         },
558         {
559             "name": "str_ireplace",
560             "desc": "This function returns a string or an array with all occurrences of search in subject (ignoring case) replaced with the given replace value. If you don't need fancy replacing rules, you should generally use this function instead of preg_replace() with the i modifier.\nIf search and replace are arrays, then str_ireplace() takes a value from each array and uses them to do search and replace on subject. If replace has fewer values than search, then an empty string is used for the rest of replacement values. If search is an array and replace is a string, then this replacement string is used for every value of search.",
561             "flags": [
562             ],
563             "return": {
564                 "type": "Variant",
565                 "desc": "Returns a string or an array of replacements."
566             },
567             "args": [
568                 {
569                     "name": "search",
570                     "type": "Variant",
571                     "desc": "Every replacement with search array is performed on the result of previous replacement."
572                 },
573                 {
574                     "name": "replace",
575                     "type": "Variant"
576                 },
577                 {
578                     "name": "subject",
579                     "type": "Variant",
580                     "desc": "If subject is an array, then the search and replace is performed with every entry of subject, and the return value is an array as well."
581                 },
582                 {
583                     "name": "count",
584                     "type": "Variant",
585                     "value": "null",
586                     "desc": "The number of matched and replaced needles will be returned in count which is passed by reference.",
587                     "ref": true
588                 }
589             ]
590         },
591         {
592             "name": "substr_replace",
593             "desc": "substr_replace() replaces a copy of string delimited by the start and (optionally) length parameters with the string given in replacement.",
594             "flags": [
595             ],
596             "return": {
597                 "type": "Variant",
598                 "desc": "The result string is returned. If string is an array then array is returned."
599             },
600             "args": [
601                 {
602                     "name": "str",
603                     "type": "Variant",
604                     "desc": "The input string."
605                 },
606                 {
607                     "name": "replacement",
608                     "type": "Variant",
609                     "desc": "The replacement string."
610                 },
611                 {
612                     "name": "start",
613                     "type": "Variant",
614                     "desc": "If start is positive, the replacing will begin at the start'th offset into string.\n\nIf start is negative, the replacing will begin at the start'th character from the end of string."
615                 },
616                 {
617                     "name": "length",
618                     "type": "Variant",
619                     "value": "0x7FFFFFFF",
620                     "desc": "If given and is positive, it represents the length of the portion of string which is to be replaced. If it is negative, it represents the number of characters from the end of string at which to stop replacing. If it is not given, then it will default to strlen( string ); i.e. end the replacing at the end of string. Of course, if length is zero then this function will have the effect of inserting replacement into string at the given start offset."
621                 }
622             ]
623         },
624         {
625             "name": "substr",
626             "desc": "Returns the portion of string specified by the start and length parameters.",
627             "flags": [
628             ],
629             "return": {
630                 "type": "Variant",
631                 "desc": "Returns the extracted part of string or FALSE on failure."
632             },
633             "args": [
634                 {
635                     "name": "str",
636                     "type": "String",
637                     "desc": "The input string."
638                 },
639                 {
640                     "name": "start",
641                     "type": "Int32",
642                     "desc": "If start is non-negative, the returned string will start at the start'th position in string, counting from zero. For instance, in the string 'abcdef', the character at position 0 is 'a', the character at position 2 is 'c', and so forth.\n\nIf start is negative, the returned string will start at the start'th character from the end of string.\n\nIf string is less than or equal to start characters long, FALSE will be returned.\n\nExample #1 Using a negative start"
643                 },
644                 {
645                     "name": "length",
646                     "type": "Int32",
647                     "value": "0x7FFFFFFF",
648                     "desc": "If length is given and is positive, the string returned will contain at most length characters beginning from start (depending on the length of string).\n\nIf length is given and is negative, then that many characters will be omitted from the end of string (after the start position has been calculated when a start is negative). If start denotes a position beyond this truncation, an empty string will be returned.\n\nIf length is given and is 0, FALSE or NULL an empty string will be returned.\n\nIf length is omitted, the substring starting from start until the end of the string will be returned. Example #2 Using a negative length"
649                 }
650             ]
651         },
652         {
653             "name": "str_pad",
654             "desc": "This functions returns the input string padded on the left, the right, or both sides to the specified padding length. If the optional argument pad_string is not supplied, the input is padded with spaces, otherwise it is padded with characters from pad_string up to the limit.",
655             "flags": [
656             ],
657             "return": {
658                 "type": "String",
659                 "desc": "Returns the padded string."
660             },
661             "args": [
662                 {
663                     "name": "input",
664                     "type": "String",
665                     "desc": "The input string."
666                 },
667                 {
668                     "name": "pad_length",
669                     "type": "Int32",
670                     "desc": "If the value of pad_length is negative, less than, or equal to the length of the input string, no padding takes place."
671                 },
672                 {
673                     "name": "pad_string",
674                     "type": "String",
675                     "value": "\" \"",
676                     "desc": "The pad_string may be truncated if the required number of padding characters can't be evenly divided by the pad_string's length."
677                 },
678                 {
679                     "name": "pad_type",
680                     "type": "Int32",
681                     "value": "k_STR_PAD_RIGHT",
682                     "desc": "Optional argument pad_type can be STR_PAD_RIGHT, STR_PAD_LEFT, or STR_PAD_BOTH. If pad_type is not specified it is assumed to be STR_PAD_RIGHT."
683                 }
684             ]
685         },
686         {
687             "name": "str_repeat",
688             "desc": "Returns input repeated multiplier times.",
689             "flags": [
690             ],
691             "return": {
692                 "type": "String",
693                 "desc": "Returns the repeated string."
694             },
695             "args": [
696                 {
697                     "name": "input",
698                     "type": "String",
699                     "desc": "The string to be repeated."
700                 },
701                 {
702                     "name": "multiplier",
703                     "type": "Int32",
704                     "desc": "Number of time the input string should be repeated.\n\nmultiplier has to be greater than or equal to 0. If the multiplier is set to 0, the function will return an empty string."
705                 }
706             ]
707         },
708         {
709             "name": "html_entity_decode",
710             "desc": "html_entity_decode() is the opposite of htmlentities() in that it converts all HTML entities to their applicable characters from string.",
711             "flags": [
712             ],
713             "return": {
714                 "type": "String",
715                 "desc": "Returns the decoded string."
716             },
717             "args": [
718                 {
719                     "name": "str",
720                     "type": "String",
721                     "desc": "The input string."
722                 },
723                 {
724                     "name": "quote_style",
725                     "type": "Int32",
726                     "value": "k_ENT_COMPAT",
727                     "desc": "The optional second quote_style parameter lets you define what will be done with 'single' and \"double\" quotes. It takes on one of three constants with the default being ENT_COMPAT: Available quote_style constants Constant Name Description ENT_COMPAT Will convert double-quotes and leave single-quotes alone. ENT_QUOTES Will convert both double and single quotes. ENT_NOQUOTES Will leave both double and single quotes unconverted."
728                 },
729                 {
730                     "name": "charset",
731                     "type": "String",
732                     "value": "\"ISO-8859-1\"",
733                     "desc": "The ISO-8859-1 character set is used as default for the optional third charset. This defines the character set used in conversion.\n\nFollowing character sets are supported in PHP 4.3.0 and later. Supported charsets Charset Aliases Description ISO-8859-1 ISO8859-1 Western European, Latin-1 ISO-8859-15 ISO8859-15 Western European, Latin-9. Adds the Euro sign, French and Finnish letters missing in Latin-1(ISO-8859-1). UTF-8  ASCII compatible multi-byte 8-bit Unicode. cp866 ibm866, 866 DOS-specific Cyrillic charset. This charset is supported in 4.3.2. cp1251 Windows-1251, win-1251, 1251 Windows-specific Cyrillic charset. This charset is supported in 4.3.2. cp1252 Windows-1252, 1252 Windows specific charset for Western European. KOI8-R koi8-ru, koi8r Russian. This charset is supported in 4.3.2. BIG5 950 Traditional Chinese, mainly used in Taiwan. GB2312 936 Simplified Chinese, national standard character set. BIG5-HKSCS  Big5 with Hong Kong extensions, Traditional Chinese. Shift_JIS SJIS, 932 Japanese EUC-JP EUCJP Japanese Any other character sets are not recognized and ISO-8859-1 will be used instead."
734                 }
735             ]
736         },
737         {
738             "name": "htmlentities",
739             "desc": "This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities.\n\nIf you're wanting to decode instead (the reverse) you can use html_entity_decode().",
740             "flags": [
741             ],
742             "return": {
743                 "type": "String",
744                 "desc": "Returns the encoded string."
745             },
746             "args": [
747                 {
748                     "name": "str",
749                     "type": "String",
750                     "desc": "The input string."
751                 },
752                 {
753                     "name": "quote_style",
754                     "type": "Int32",
755                     "value": "k_ENT_COMPAT",
756                     "desc": "Like htmlspecialchars(), the optional second quote_style parameter lets you define what will be done with 'single' and \"double\" quotes. It takes on one of three constants with the default being ENT_COMPAT: Available quote_style constants Constant Name Description ENT_COMPAT Will convert double-quotes and leave single-quotes alone. ENT_QUOTES Will convert both double and single quotes. ENT_NOQUOTES Will leave both double and single quotes unconverted."
757                 },
758                 {
759                     "name": "charset",
760                     "type": "String",
761                     "value": "\"ISO-8859-1\"",
762                     "desc": "Like htmlspecialchars(), it takes an optional third argument charset which defines character set used in conversion. Presently, the ISO-8859-1 character set is used as the default.\n\nFollowing character sets are supported in PHP 4.3.0 and later. Supported charsets Charset Aliases Description ISO-8859-1 ISO8859-1 Western European, Latin-1 ISO-8859-15 ISO8859-15 Western European, Latin-9. Adds the Euro sign, French and Finnish letters missing in Latin-1(ISO-8859-1). UTF-8  ASCII compatible multi-byte 8-bit Unicode. cp866 ibm866, 866 DOS-specific Cyrillic charset. This charset is supported in 4.3.2. cp1251 Windows-1251, win-1251, 1251 Windows-specific Cyrillic charset. This charset is supported in 4.3.2. cp1252 Windows-1252, 1252 Windows specific charset for Western European. KOI8-R koi8-ru, koi8r Russian. This charset is supported in 4.3.2. BIG5 950 Traditional Chinese, mainly used in Taiwan. GB2312 936 Simplified Chinese, national standard character set. BIG5-HKSCS  Big5 with Hong Kong extensions, Traditional Chinese. Shift_JIS SJIS, 932 Japanese EUC-JP EUCJP Japanese Any other character sets are not recognized and ISO-8859-1 will be used instead."
763                 },
764                 {
765                     "name": "double_encode",
766                     "type": "Boolean",
767                     "value": "true",
768                     "desc": "When double_encode is turned off PHP will not encode existing html entities. The default is to convert everything."
769                 }
770             ]
771         },
772         {
773             "name": "htmlspecialchars_decode",
774             "desc": "This function is the opposite of htmlspecialchars(). It converts special HTML entities back to characters.\n\nThe converted entities are: &amp;, &quot; (when ENT_NOQUOTES is not set), &#039; (when ENT_QUOTES is set), &lt; and &gt;.",
775             "flags": [
776             ],
777             "return": {
778                 "type": "String",
779                 "desc": "Returns the decoded string."
780             },
781             "args": [
782                 {
783                     "name": "str",
784                     "type": "String",
785                     "desc": "The string to decode"
786                 },
787                 {
788                     "name": "quote_style",
789                     "type": "Int32",
790                     "value": "k_ENT_COMPAT",
791                     "desc": "The quote style. One of the following constants: quote_style constants Constant Name Description ENT_COMPAT Will convert double-quotes and leave single-quotes alone (default) ENT_QUOTES Will convert both double and single quotes ENT_NOQUOTES Will leave both double and single quotes unconverted"
792                 }
793             ]
794         },
795         {
796             "name": "htmlspecialchars",
797             "desc": "Certain characters have special significance in HTML, and should be represented by HTML entities if they are to preserve their meanings. This function returns a string with some of these conversions made; the translations made are those most useful for everyday web programming. If you require all HTML character entities to be translated, use htmlentities() instead. This function is useful in preventing user-supplied text from containing HTML markup, such as in a message board or guest book application.\n\nThe translations performed are: '&' (ampersand) becomes '&amp;' '\"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set. ''' (single quote) becomes '&#039;' only when ENT_QUOTES is set. '<' (less than) becomes '&lt;' '>' (greater than) becomes '&gt;'",
798             "flags": [
799             ],
800             "return": {
801                 "type": "String",
802                 "desc": "The converted string."
803             },
804             "args": [
805                 {
806                     "name": "str",
807                     "type": "String",
808                     "desc": "The string being converted."
809                 },
810                 {
811                     "name": "quote_style",
812                     "type": "Int32",
813                     "value": "k_ENT_COMPAT",
814                     "desc": "The optional second argument, quote_style, tells the function what to do with single and double quote characters. The default mode, ENT_COMPAT, is the backwards compatible mode which only translates the double-quote character and leaves the single-quote untranslated. If ENT_QUOTES is set, both single and double quotes are translated and if ENT_NOQUOTES is set neither single nor double quotes are translated."
815                 },
816                 {
817                     "name": "charset",
818                     "type": "String",
819                     "value": "\"ISO-8859-1\"",
820                     "desc": "Defines character set used in conversion. The default character set is ISO-8859-1.\n\nFor the purposes of this function, the charsets ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252, and KOI8-R are effectively equivalent, as the characters affected by htmlspecialchars() occupy the same positions in all of these charsets.\n\nFollowing character sets are supported in PHP 4.3.0 and later. Supported charsets Charset Aliases Description ISO-8859-1 ISO8859-1 Western European, Latin-1 ISO-8859-15 ISO8859-15 Western European, Latin-9. Adds the Euro sign, French and Finnish letters missing in Latin-1(ISO-8859-1). UTF-8  ASCII compatible multi-byte 8-bit Unicode. cp866 ibm866, 866 DOS-specific Cyrillic charset. This charset is supported in 4.3.2. cp1251 Windows-1251, win-1251, 1251 Windows-specific Cyrillic charset. This charset is supported in 4.3.2. cp1252 Windows-1252, 1252 Windows specific charset for Western European. KOI8-R koi8-ru, koi8r Russian. This charset is supported in 4.3.2. BIG5 950 Traditional Chinese, mainly used in Taiwan. GB2312 936 Simplified Chinese, national standard character set. BIG5-HKSCS  Big5 with Hong Kong extensions, Traditional Chinese. Shift_JIS SJIS, 932 Japanese EUC-JP EUCJP Japanese Any other character sets are not recognized and ISO-8859-1 will be used instead."
821                 },
822                 {
823                     "name": "double_encode",
824                     "type": "Boolean",
825                     "value": "true",
826                     "desc": "When double_encode is turned off PHP will not encode existing html entities, the default is to convert everything."
827                 }
828             ]
829         },
830         {
831             "name": "fb_htmlspecialchars",
832             "desc": "Certain characters have special significance in HTML, and should be represented by HTML entities if they are to preserve their meanings. This function returns a string with some of these conversions made; the translations made are those most useful for everyday web programming. If you require all HTML character entities to be translated, use htmlentities() instead. This function is useful in preventing user-supplied text from containing HTML markup, such as in a message board or guest book application.\n\nThe translations performed are: '&' (ampersand) becomes '&amp;' '\"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set. ''' (single quote) becomes '&#039;' only when ENT_QUOTES is set. '<' (less than) becomes '&lt;' '>' (greater than) becomes '&gt;'",
833             "flags": [
834             ],
835             "return": {
836                 "type": "String",
837                 "desc": "The converted string."
838             },
839             "args": [
840                 {
841                     "name": "str",
842                     "type": "String",
843                     "desc": "The string being converted."
844                 },
845                 {
846                     "name": "quote_style",
847                     "type": "Int32",
848                     "value": "k_ENT_COMPAT",
849                     "desc": "The optional second argument, quote_style, tells the function what to do with single and double quote characters. The default mode, ENT_COMPAT, is the backwards compatible mode which only translates the double-quote character and leaves the single-quote untranslated. If ENT_QUOTES is set, both single and double quotes are translated and if ENT_NOQUOTES is set neither single nor double quotes are translated."
850                 },
851                 {
852                     "name": "charset",
853                     "type": "String",
854                     "value": "\"ISO-8859-1\"",
855                     "desc": "Defines character set used in conversion. The default character set is ISO-8859-1.\n\nFor the purposes of this function, the charsets ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252, and KOI8-R are effectively equivalent, as the characters affected by htmlspecialchars() occupy the same positions in all of these charsets.\n\nFollowing character sets are supported in PHP 4.3.0 and later. Supported charsets Charset Aliases Description ISO-8859-1 ISO8859-1 Western European, Latin-1 ISO-8859-15 ISO8859-15 Western European, Latin-9. Adds the Euro sign, French and Finnish letters missing in Latin-1(ISO-8859-1). UTF-8  ASCII compatible multi-byte 8-bit Unicode. cp866 ibm866, 866 DOS-specific Cyrillic charset. This charset is supported in 4.3.2. cp1251 Windows-1251, win-1251, 1251 Windows-specific Cyrillic charset. This charset is supported in 4.3.2. cp1252 Windows-1252, 1252 Windows specific charset for Western European. KOI8-R koi8-ru, koi8r Russian. This charset is supported in 4.3.2. BIG5 950 Traditional Chinese, mainly used in Taiwan. GB2312 936 Simplified Chinese, national standard character set. BIG5-HKSCS  Big5 with Hong Kong extensions, Traditional Chinese. Shift_JIS SJIS, 932 Japanese EUC-JP EUCJP Japanese Any other character sets are not recognized and ISO-8859-1 will be used instead."
856                 },
857                 {
858                     "name": "extra",
859                     "type": "StringVec",
860                     "value": "empty_array",
861                     "desc": "An array of extra ascii chars to be encoded."
862                 }
863             ]
864         },
865         {
866             "name": "quoted_printable_encode",
867             "desc": "Returns a quoted printable string created according to  RFC2045, section 6.7.\n\nThis function is similar to imap_8bit(), except this one does not require the IMAP module to work.",
868             "flags": [
869             ],
870             "return": {
871                 "type": "String",
872                 "desc": "Returns the encoded string."
873             },
874             "args": [
875                 {
876                     "name": "str",
877                     "type": "String",
878                     "desc": "The input string."
879                 }
880             ]
881         },
882         {
883             "name": "quoted_printable_decode",
884             "desc": "This function returns an 8-bit binary string corresponding to the decoded quoted printable string (according to  RFC2045, section 6.7, not  RFC2821, section 4.5.2, so additional periods are not stripped from the beginning of line).\n\nThis function is similar to imap_qprint(), except this one does not require the IMAP module to work.",
885             "flags": [
886             ],
887             "return": {
888                 "type": "String",
889                 "desc": "Returns the 8-bit binary string."
890             },
891             "args": [
892                 {
893                     "name": "str",
894                     "type": "String",
895                     "desc": "The input string."
896                 }
897             ]
898         },
899         {
900             "name": "convert_uudecode",
901             "desc": "convert_uudecode() decodes a uuencoded string.",
902             "flags": [
903             ],
904             "return": {
905                 "type": "Variant",
906                 "desc": "Returns the decoded data as a string."
907             },
908             "args": [
909                 {
910                     "name": "data",
911                     "type": "String",
912                     "desc": "The uuencoded data."
913                 }
914             ]
915         },
916         {
917             "name": "convert_uuencode",
918             "desc": "convert_uuencode() encodes a string using the uuencode algorithm.\n\nUuencode translates all strings (including binary's ones) into printable characters, making them safe for network transmissions. Uuencoded data is about 35% larger than the original.",
919             "flags": [
920             ],
921             "return": {
922                 "type": "Variant",
923                 "desc": "Returns the uuencoded data."
924             },
925             "args": [
926                 {
927                     "name": "data",
928                     "type": "String",
929                     "desc": "The data to be encoded."
930                 }
931             ]
932         },
933         {
934             "name": "str_rot13",
935             "desc": "Performs the ROT13 encoding on the str argument and returns the resulting string.\n\nThe ROT13 encoding simply shifts every letter by 13 places in the alphabet while leaving non-alpha characters untouched. Encoding and decoding are done by the same function, passing an encoded string as argument will return the original version.",
936             "flags": [
937                 "FunctionIsFoldable"
938             ],
939             "return": {
940                 "type": "String",
941                 "desc": "Returns the ROT13 version of the given string."
942             },
943             "args": [
944                 {
945                     "name": "str",
946                     "type": "String",
947                     "desc": "The input string."
948                 }
949             ]
950         },
951         {
952             "name": "crc32",
953             "desc": "Generates the cyclic redundancy checksum polynomial of 32-bit lengths of the str. This is usually used to validate the integrity of data being transmitted.\n\nBecause PHP's integer type is signed, and many crc32 checksums will result in negative integers, you need to use the \"%u\" formatter of sprintf() or printf() to get the string representation of the unsigned crc32 checksum.",
954             "flags": [
955                 "FunctionIsFoldable"
956             ],
957             "return": {
958                 "type": "Int64",
959                 "desc": "Returns the crc32 checksum of str as an integer."
960             },
961             "args": [
962                 {
963                     "name": "str",
964                     "type": "String",
965                     "desc": "The data."
966                 }
967             ]
968         },
969         {
970             "name": "crypt",
971             "desc": "crypt() will return a hashed string using the standard Unix DES-based algorithm or alternative algorithms that may be available on the system.\n\nSome operating systems support more than one type of hash. In fact, sometimes the standard DES-based algorithm is replaced by an MD5-based algorithm. The hash type is triggered by the salt argument. Prior to 5.3, PHP would determine the available algorithms at install-time based on the system's crypt(). If no salt is provided, PHP will auto-generate either a standard two character (DES) salt, or a twelve character (MD5), depending on the availability of MD5 crypt(). PHP sets a constant named CRYPT_SALT_LENGTH which indicates the longest valid salt allowed by the available hashes.\n\nThe standard DES-based crypt() returns the salt as the first two characters of the output. It also only uses the first eight characters of str, so longer strings that start with the same eight characters will generate the same result (when the same salt is used). On systems where the crypt() function supports multiple hash types, the following constants are set to 0 or 1 depending on whether the given type is available: CRYPT_STD_DES - Standard DES-based hash with a two character salt from the alphabet \".\/0-9A-Za-z\". Using invalid characters in the salt will cause crypt() to fail. CRYPT_EXT_DES - Extended DES-based hash. The \"salt\" is a 9-character string consisting of an underscore followed by 4 bytes of iteration count and 4 bytes of salt. These are encoded as printable characters, 6 bits per character, least significant character first. The values 0 to 63 are encoded as \".\/0-9A-Za-z\". Using invalid characters in the salt will cause crypt() to fail. CRYPT_MD5 - MD5 hashing with a twelve character salt starting with $1$ CRYPT_BLOWFISH - Blowfish hashing with a salt as follows: \"$2a$\", a two digit cost parameter, \"$\", and 22 base 64 digits from the alphabet \".\/0-9A-Za-z\". Using characters outside of this range in the salt will cause crypt() to return a zero-length string. The two digit cost parameter is the base-2 logarithm of the iteration count for the underlying Blowfish-based hashing algorithmeter and must be in range 04-31, values outside this range will cause crypt() to fail. CRYPT_SHA256 - SHA-256 hash with a sixteen character salt prefixed with $5$. If the salt string starts with 'rounds=<N>$', the numeric value of N is used to indicate how many times the hashing loop should be executed, much like the cost parameter on Blowfish. The default number of rounds is 5000, there is a minimum of 1000 and a maximum of 999,999,999. Any selection of N outside this range will be truncated to the nearest limit. CRYPT_SHA512 - SHA-512 hash with a sixteen character salt prefixed with $6$. If the salt string starts with 'rounds=<N>$', the numeric value of N is used to indicate how many times the hashing loop should be executed, much like the cost parameter on Blowfish. The default number of rounds is 5000, there is a minimum of 1000 and a maximum of 999,999,999. Any selection of N outside this range will be truncated to the nearest limit.\n\nAs of PHP 5.3.0, PHP contains its own implementation and will use that if the system lacks of support for one or more of the algorithms.",
972             "flags": [
973             ],
974             "return": {
975                 "type": "String",
976                 "desc": "Returns the hashed string or a string that is shorter than 13 characters and is guaranteed to differ from the salt on failure."
977             },
978             "args": [
979                 {
980                     "name": "str",
981                     "type": "String",
982                     "desc": "The string to be hashed."
983                 },
984                 {
985                     "name": "salt",
986                     "type": "String",
987                     "value": "\"\"",
988                     "desc": "An optional salt string to base the hashing on. If not provided, the behaviour is defined by the algorithm implementation and can lead to unexpected results."
989                 }
990             ]
991         },
992         {
993             "name": "md5",
994             "desc": "Calculates the MD5 hash of str using the RSA Data Security, Inc. MD5 Message-Digest Algorithm, and returns that hash.",
995             "flags": [
996                 "FunctionIsFoldable"
997             ],
998             "return": {
999                 "type": "String",
1000                 "desc": "Returns the hash as a 32-character hexadecimal number."
1001             },
1002             "args": [
1003                 {
1004                     "name": "str",
1005                     "type": "String",
1006                     "desc": "The string."
1007                 },
1008                 {
1009                     "name": "raw_output",
1010                     "type": "Boolean",
1011                     "value": "false",
1012                     "desc": "If the optional raw_output is set to TRUE, then the md5 digest is instead returned in raw binary format with a length of 16."
1013                 }
1014             ]
1015         },
1016         {
1017             "name": "sha1",
1018             "flags": [
1019             ],
1020             "return": {
1021                 "type": "String",
1022                 "desc": "Returns the sha1 hash as a string."
1023             },
1024             "args": [
1025                 {
1026                     "name": "str",
1027                     "type": "String",
1028                     "desc": "The input string."
1029                 },
1030                 {
1031                     "name": "raw_output",
1032                     "type": "Boolean",
1033                     "value": "false",
1034                     "desc": "If the optional raw_output is set to TRUE, then the sha1 digest is instead returned in raw binary format with a length of 20, otherwise the returned value is a 40-character hexadecimal number."
1035                 }
1036             ]
1037         },
1038         {
1039             "name": "strtr",
1040             "desc": "This function returns a copy of str, translating all occurrences of each character in from to the corresponding character in to.\n\nIf from and to are different lengths, the extra characters in the longer of the two are ignored.",
1041             "flags": [
1042             ],
1043             "return": {
1044                 "type": "Variant",
1045                 "desc": "Returns the translated string.\n\nIf replace_pairs contains a key which is an empty string (\"\"), FALSE will be returned."
1046             },
1047             "args": [
1048                 {
1049                     "name": "str",
1050                     "type": "String",
1051                     "desc": "The string being translated."
1052                 },
1053                 {
1054                     "name": "from",
1055                     "type": "Variant",
1056                     "desc": "The string being translated to to."
1057                 },
1058                 {
1059                     "name": "to",
1060                     "type": "Variant",
1061                     "value": "null_variant",
1062                     "desc": "The string replacing from."
1063                 }
1064             ]
1065         },
1066         {
1067             "name": "convert_cyr_string",
1068             "desc": "Converts from one Cyrillic character set to another.\nSupported characters are: k - koi8-r w - windows-1251 i - iso8859-5 a - x-cp866 d - x-cp866 m - x-mac-cyrillic",
1069             "flags": [
1070             ],
1071             "return": {
1072                 "type": "String",
1073                 "desc": "Returns the converted string."
1074             },
1075             "args": [
1076                 {
1077                     "name": "str",
1078                     "type": "String",
1079                     "desc": "The string to be converted."
1080                 },
1081                 {
1082                     "name": "from",
1083                     "type": "String",
1084                     "desc": "The source Cyrillic character set, as a single character."
1085                 },
1086                 {
1087                     "name": "to",
1088                     "type": "String",
1089                     "desc": "The target Cyrillic character set, as a single character."
1090                 }
1091             ]
1092         },
1093         {
1094             "name": "get_html_translation_table",
1095             "desc": "get_html_translation_table() will return the translation table that is used internally for htmlspecialchars() and htmlentities() with the default charset.\n\nSpecial characters can be encoded in several ways. E.g. \" can be encoded as &quot;, &#34; or &#x22. get_html_translation_table() returns only the most common form for them.",
1096             "flags": [
1097             ],
1098             "return": {
1099                 "type": "StringMap",
1100                 "desc": "Returns the translation table as an array."
1101             },
1102             "args": [
1103                 {
1104                     "name": "table",
1105                     "type": "Int32",
1106                     "value": "0",
1107                     "desc": "There are two new constants (HTML_ENTITIES, HTML_SPECIALCHARS) that allow you to specify the table you want."
1108                 },
1109                 {
1110                     "name": "quote_style",
1111                     "type": "Int32",
1112                     "value": "k_ENT_COMPAT",
1113                     "desc": "Like the htmlspecialchars() and htmlentities() functions you can optionally specify the quote_style you are working with. See the description of these modes in htmlspecialchars()."
1114                 }
1115             ]
1116         },
1117         {
1118             "name": "hebrev",
1119             "desc": "Converts logical Hebrew text to visual text.\n\nThe function tries to avoid breaking words.",
1120             "flags": [
1121             ],
1122             "return": {
1123                 "type": "String",
1124                 "desc": "Returns the visual string."
1125             },
1126             "args": [
1127                 {
1128                     "name": "hebrew_text",
1129                     "type": "String",
1130                     "desc": "A Hebrew input string."
1131                 },
1132                 {
1133                     "name": "max_chars_per_line",
1134                     "type": "Int32",
1135                     "value": "0",
1136                     "desc": "This optional parameter indicates maximum number of characters per line that will be returned."
1137                 }
1138             ]
1139         },
1140         {
1141             "name": "hebrevc",
1142             "desc": "This function is similar to hebrev() with the difference that it converts newlines (\\n) to \"<br>\\n\".\n\nThe function tries to avoid breaking words.",
1143             "flags": [
1144             ],
1145             "return": {
1146                 "type": "String",
1147                 "desc": "Returns the visual string."
1148             },
1149             "args": [
1150                 {
1151                     "name": "hebrew_text",
1152                     "type": "String",
1153                     "desc": "A Hebrew input string."
1154                 },
1155                 {
1156                     "name": "max_chars_per_line",
1157                     "type": "Int32",
1158                     "value": "0",
1159                     "desc": "This optional parameter indicates maximum number of characters per line that will be returned."
1160                 }
1161             ]
1162         },
1163         {
1164             "name": "setlocale",
1165             "desc": "Sets locale information.\nOn Windows, setlocale(LC_ALL, '') sets the locale names from the system's regional\/language settings (accessible via Control Panel).",
1166             "flags": [
1167                 "VariableArguments"
1168             ],
1169             "return": {
1170                 "type": "Variant",
1171                 "desc": "Returns the new current locale, or FALSE if the locale functionality is not implemented on your platform, the specified locale does not exist or the category name is invalid.\n\nAn invalid category name also causes a warning message. Category\/locale names can be found in  RFC 1766 and  ISO 639. Different systems have different naming schemes for locales.\n\nThe return value of setlocale() depends on the system that PHP is running. It returns exactly what the system setlocale function returns."
1172             },
1173             "args": [
1174                 {
1175                     "name": "category",
1176                     "type": "Int32",
1177                     "desc": "category is a named constant specifying the category of the functions affected by the locale setting: LC_ALL for all of the below LC_COLLATE for string comparison, see strcoll() LC_CTYPE for character classification and conversion, for example strtoupper() LC_MONETARY for localeconv() LC_NUMERIC for decimal separator (See also localeconv()) LC_TIME for date and time formatting with strftime() LC_MESSAGES for system responses (available if PHP was compiled with libintl)"
1178                 },
1179                 {
1180                     "name": "locale",
1181                     "type": "Variant",
1182                     "desc": "If locale is NULL or the empty string \"\", the locale names will be set from the values of environment variables with the same names as the above categories, or from \"LANG\".\n\nIf locale is \"0\", the locale setting is not affected, only the current setting is returned.\n\nIf locale is an array or followed by additional parameters then each array element or parameter is tried to be set as new locale until success. This is useful if a locale is known under different names on different systems or for providing a fallback for a possibly not available locale."
1183                 }
1184             ]
1185         },
1186         {
1187             "name": "localeconv",
1188             "desc": "Returns an associative array containing localized numeric and monetary formatting information.",
1189             "flags": [
1190             ],
1191             "return": {
1192                 "type": "VariantMap"
1193             },
1194             "args": [
1195             ]
1196         },
1197         {
1198             "name": "nl_langinfo",
1199             "desc": "nl_langinfo() is used to access individual elements of the locale categories. Unlike localeconv(), which returns all of the elements, nl_langinfo() allows you to select any specific element.",
1200             "flags": [
1201             ],
1202             "return": {
1203                 "type": "String",
1204                 "desc": "Returns the element as a string, or FALSE if item is not valid."
1205             },
1206             "args": [
1207                 {
1208                     "name": "item",
1209                     "type": "Int32"
1210                 }
1211             ]
1212         },
1213         {
1214             "name": "printf",
1215             "flags": [
1216                 "VariableArguments"
1217             ],
1218             "return": {
1219                 "type": "Variant",
1220                 "desc": "Returns the length of the outputted string."
1221             },
1222             "args": [
1223                 {
1224                     "name": "format",
1225                     "type": "String",
1226                     "desc": "See sprintf() for a description of format."
1227                 }
1228             ]
1229         },
1230         {
1231             "name": "vprintf",
1232             "desc": "Display array values as a formatted string according to format (which is described in the documentation for sprintf()).\n\nOperates as printf() but accepts an array of arguments, rather than a variable number of arguments.",
1233             "flags": [
1234             ],
1235             "return": {
1236                 "type": "Variant",
1237                 "desc": "Returns the length of the outputted string."
1238             },
1239             "args": [
1240                 {
1241                     "name": "format",
1242                     "type": "String",
1243                     "desc": "See sprintf() for a description of format."
1244                 },
1245                 {
1246                     "name": "args",
1247                     "type": "VariantVec"
1248                 }
1249             ]
1250         },
1251         {
1252             "name": "sprintf",
1253             "desc": "Returns a string produced according to the formatting string format.",
1254             "flags": [
1255                 "VariableArguments",
1256                 "FunctionIsFoldable"
1257             ],
1258             "return": {
1259                 "type": "Variant",
1260                 "desc": "Returns a string produced according to the formatting string format."
1261             },
1262             "args": [
1263                 {
1264                     "name": "format",
1265                     "type": "String"
1266                 }
1267             ]
1268         },
1269         {
1270             "name": "vsprintf",
1271             "desc": "Operates as sprintf() but accepts an array of arguments, rather than a variable number of arguments.",
1272             "flags": [
1273                 "FunctionIsFoldable"
1274             ],
1275             "return": {
1276                 "type": "Variant",
1277                 "desc": "Return array values as a formatted string according to format (which is described in the documentation for sprintf())."
1278             },
1279             "args": [
1280                 {
1281                     "name": "format",
1282                     "type": "String",
1283                     "desc": "See sprintf() for a description of format."
1284                 },
1285                 {
1286                     "name": "args",
1287                     "type": "VariantVec"
1288                 }
1289             ]
1290         },
1291         {
1292             "name": "sscanf",
1293             "desc": "The function sscanf() is the input analog of printf(). sscanf() reads from the string str and interprets it according to the specified format, which is described in the documentation for sprintf().\n\nAny whitespace in the format string matches any whitespace in the input string. This means that even a tab \\t in the format string can match a single space character in the input string.",
1294             "flags": [
1295                 "RefVariableArguments"
1296             ],
1297             "return": {
1298                 "type": "Variant",
1299                 "desc": "If only two parameters were passed to this function, the values parsed will be returned as an array. Otherwise, if optional parameters are passed, the function will return the number of assigned values. The optional parameters must be passed by reference."
1300             },
1301             "args": [
1302                 {
1303                     "name": "str",
1304                     "type": "String",
1305                     "desc": "The input string being parsed."
1306                 },
1307                 {
1308                     "name": "format",
1309                     "type": "String",
1310                     "desc": "The interpreted format for str, which is described in the documentation for sprintf() with following differences: Function is not locale-aware. F, g, G and b are not supported. D stands for decimal number. i stands for integer with base detection. n stands for number of characters processed so far."
1311                 }
1312             ]
1313         },
1314         {
1315             "name": "chr",
1316             "desc": "Returns a one-character string containing the character specified by ascii.\n\nThis function complements ord().",
1317             "flags": [
1318                 "FunctionIsFoldable"
1319             ],
1320             "return": {
1321                 "type": "String",
1322                 "desc": "Returns the specified character."
1323             },
1324             "args": [
1325                 {
1326                     "name": "ascii",
1327                     "type": "Int64",
1328                     "desc": "The ascii code."
1329                 }
1330             ]
1331         },
1332         {
1333             "name": "ord",
1334             "desc": "Returns the ASCII value of the first character of string.\n\nThis function complements chr().",
1335             "flags": [
1336                 "FunctionIsFoldable"
1337             ],
1338             "return": {
1339                 "type": "Int64",
1340                 "desc": "Returns the ASCII value as an integer."
1341             },
1342             "args": [
1343                 {
1344                     "name": "str",
1345                     "type": "String",
1346                     "desc": "A character."
1347                 }
1348             ]
1349         },
1350         {
1351             "name": "money_format",
1352             "desc": "money_format() returns a formatted version of number. This function wraps the C library function strfmon(), with the difference that this implementation converts only one number at a time.",
1353             "flags": [
1354             ],
1355             "return": {
1356                 "type": "Variant",
1357                 "desc": "Returns the formatted string. Characters before and after the formatting string will be returned unchanged. Non-numeric number causes returning NULL and emitting E_WARNING."
1358             },
1359             "args": [
1360                 {
1361                     "name": "format",
1362                     "type": "String",
1363                     "desc": "The format specification consists of the following sequence: % character Flags\n\nOne or more of the optional flags below can be used: =f\n\nThe character = followed by a (single byte) character f to be used as the numeric fill character. The default fill character is space."
1364                 },
1365                 {
1366                     "name": "number",
1367                     "type": "Double",
1368                     "desc": "Disable the use of grouping characters (as defined by the current locale)."
1369                 }
1370             ]
1371         },
1372         {
1373             "name": "number_format",
1374             "desc": "This function accepts either one, two, or four parameters (not three):\n\nIf only one parameter is given, number will be formatted without decimals, but with a comma (\",\") between every group of thousands.\n\nIf two parameters are given, number will be formatted with decimals decimals with a dot (\".\") in front, and a comma (\",\") between every group of thousands.\n\nIf all four parameters are given, number will be formatted with decimals decimals, dec_point instead of a dot (\".\") before the decimals and thousands_sep instead of a comma (\",\") between every group of thousands.",
1375             "flags": [
1376             ],
1377             "return": {
1378                 "type": "String",
1379                 "desc": "A formatted version of number."
1380             },
1381             "args": [
1382                 {
1383                     "name": "number",
1384                     "type": "Double",
1385                     "desc": "The number being formatted."
1386                 },
1387                 {
1388                     "name": "decimals",
1389                     "type": "Int32",
1390                     "value": "0",
1391                     "desc": "Sets the number of decimal points."
1392                 },
1393                 {
1394                     "name": "dec_point",
1395                     "type": "Variant",
1396                     "value": "\".\"",
1397                     "desc": "Sets the separator for the decimal point."
1398                 },
1399                 {
1400                     "name": "thousands_sep",
1401                     "type": "Variant",
1402                     "value": "\",\"",
1403                     "desc": "Sets the thousands separator.\n\nOnly the first character of thousands_sep is used. For example, if you use bar as thousands_sep on the number 1000, number_format() will return 1b000."
1404                 }
1405             ]
1406         },
1407         {
1408             "name": "strcmp",
1409             "flags": [
1410                 "FunctionIsFoldable"
1411             ],
1412             "return": {
1413                 "type": "Int64",
1414                 "desc": "Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal."
1415             },
1416             "args": [
1417                 {
1418                     "name": "str1",
1419                     "type": "String",
1420                     "desc": "The first string."
1421                 },
1422                 {
1423                     "name": "str2",
1424                     "type": "String",
1425                     "desc": "The second string."
1426                 }
1427             ]
1428         },
1429         {
1430             "name": "strncmp",
1431             "desc": "This function is similar to strcmp(), with the difference that you can specify the (upper limit of the) number of characters from each string to be used in the comparison.\n\nNote that this comparison is case sensitive.",
1432             "flags": [
1433                 "FunctionIsFoldable"
1434             ],
1435             "return": {
1436                 "type": "Variant",
1437                 "desc": "Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.",
1438                 "predicted_type": 5
1439             },
1440             "args": [
1441                 {
1442                     "name": "str1",
1443                     "type": "String",
1444                     "desc": "The first string."
1445                 },
1446                 {
1447                     "name": "str2",
1448                     "type": "String",
1449                     "desc": "The second string."
1450                 },
1451                 {
1452                     "name": "len",
1453                     "type": "Int32",
1454                     "desc": "Number of characters to use in the comparison."
1455                 }
1456             ]
1457         },
1458         {
1459             "name": "strnatcmp",
1460             "desc": "This function implements a comparison algorithm that orders alphanumeric strings in the way a human being would, this is described as a \"natural ordering\". Note that this comparison is case sensitive.",
1461             "flags": [
1462                 "FunctionIsFoldable"
1463             ],
1464             "return": {
1465                 "type": "Int64",
1466                 "desc": "Similar to other string comparison functions, this one returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal."
1467             },
1468             "args": [
1469                 {
1470                     "name": "str1",
1471                     "type": "String",
1472                     "desc": "The first string."
1473                 },
1474                 {
1475                     "name": "str2",
1476                     "type": "String",
1477                     "desc": "The second string."
1478                 }
1479             ]
1480         },
1481         {
1482             "name": "strcasecmp",
1483             "desc": "Binary safe case-insensitive string comparison.",
1484             "flags": [
1485                 "FunctionIsFoldable"
1486             ],
1487             "return": {
1488                 "type": "Int64",
1489                 "desc": "Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal."
1490             },
1491             "args": [
1492                 {
1493                     "name": "str1",
1494                     "type": "String",
1495                     "desc": "The first string"
1496                 },
1497                 {
1498                     "name": "str2",
1499                     "type": "String",
1500                     "desc": "The second string"
1501                 }
1502             ]
1503         },
1504         {
1505             "name": "strncasecmp",
1506             "desc": "This function is similar to strcasecmp(), with the difference that you can specify the (upper limit of the) number of characters from each string to be used in the comparison.",
1507             "flags": [
1508                 "FunctionIsFoldable"
1509             ],
1510             "return": {
1511                 "type": "Variant",
1512                 "desc": "Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.",
1513                 "predicted_type": 5
1514             },
1515             "args": [
1516                 {
1517                     "name": "str1",
1518                     "type": "String",
1519                     "desc": "The first string."
1520                 },
1521                 {
1522                     "name": "str2",
1523                     "type": "String",
1524                     "desc": "The second string."
1525                 },
1526                 {
1527                     "name": "len",
1528                     "type": "Int32",
1529                     "desc": "The length of strings to be used in the comparison."
1530                 }
1531             ]
1532         },
1533         {
1534             "name": "strnatcasecmp",
1535             "desc": "This function implements a comparison algorithm that orders alphanumeric strings in the way a human being would. The behaviour of this function is similar to strnatcmp(), except that the comparison is not case sensitive. For more information see: Martin Pool's  Natural Order String Comparison page.",
1536             "flags": [
1537                 "FunctionIsFoldable"
1538             ],
1539             "return": {
1540                 "type": "Int64",
1541                 "desc": "Similar to other string comparison functions, this one returns < 0 if str1 is less than str2 > 0 if str1 is greater than str2, and 0 if they are equal."
1542             },
1543             "args": [
1544                 {
1545                     "name": "str1",
1546                     "type": "String",
1547                     "desc": "The first string."
1548                 },
1549                 {
1550                     "name": "str2",
1551                     "type": "String",
1552                     "desc": "The second string."
1553                 }
1554             ]
1555         },
1556         {
1557             "name": "strcoll",
1558             "desc": "Note that this comparison is case sensitive, and unlike strcmp() this function is not binary safe.\n\nstrcoll() uses the current locale for doing the comparisons. If the current locale is C or POSIX, this function is equivalent to strcmp().",
1559             "flags": [
1560                 "FunctionIsFoldable"
1561             ],
1562             "return": {
1563                 "type": "Int64",
1564                 "desc": "Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal."
1565             },
1566             "args": [
1567                 {
1568                     "name": "str1",
1569                     "type": "String",
1570                     "desc": "The first string."
1571                 },
1572                 {
1573                     "name": "str2",
1574                     "type": "String",
1575                     "desc": "The second string."
1576                 }
1577             ]
1578         },
1579         {
1580             "name": "substr_compare",
1581             "desc": "substr_compare() compares main_str from position offset with str up to length characters.",
1582             "flags": [
1583                 "FunctionIsFoldable"
1584             ],
1585             "return": {
1586                 "type": "Variant",
1587                 "desc": "Returns < 0 if main_str from position offset is less than str, > 0 if it is greater than str, and 0 if they are equal. If offset is equal to or greater than the length of main_str or length is set and is less than 1, substr_compare() prints a warning and returns FALSE."
1588             },
1589             "args": [
1590                 {
1591                     "name": "main_str",
1592                     "type": "String",
1593                     "desc": "The main string being compared."
1594                 },
1595                 {
1596                     "name": "str",
1597                     "type": "String",
1598                     "desc": "The secondary string being compared."
1599                 },
1600                 {
1601                     "name": "offset",
1602                     "type": "Int32",
1603                     "desc": "The start position for the comparison. If negative, it starts counting from the end of the string."
1604                 },
1605                 {
1606                     "name": "length",
1607                     "type": "Int32",
1608                     "value": "INT_MAX",
1609                     "desc": "The length of the comparison. The default value is the largest of the length of the str compared to the length of main_str less the offset."
1610                 },
1611                 {
1612                     "name": "case_insensitivity",
1613                     "type": "Boolean",
1614                     "value": "false",
1615                     "desc": "If case_insensitivity is TRUE, comparison is case insensitive."
1616                 }
1617             ]
1618         },
1619         {
1620             "name": "strchr",
1621             "flags": [
1622                 "FunctionIsFoldable"
1623             ],
1624             "return": {
1625                 "type": "Variant"
1626             },
1627             "args": [
1628                 {
1629                     "name": "haystack",
1630                     "type": "String"
1631                 },
1632                 {
1633                     "name": "needle",
1634                     "type": "Variant"
1635                 }
1636             ]
1637         },
1638         {
1639             "name": "strrchr",
1640             "desc": "This function returns the portion of haystack which starts at the last occurrence of needle and goes until the end of haystack.",
1641             "flags": [
1642                 "FunctionIsFoldable"
1643             ],
1644             "return": {
1645                 "type": "Variant",
1646                 "desc": "This function returns the portion of string, or FALSE if needle is not found."
1647             },
1648             "args": [
1649                 {
1650                     "name": "haystack",
1651                     "type": "String",
1652                     "desc": "The string to search in"
1653                 },
1654                 {
1655                     "name": "needle",
1656                     "type": "Variant",
1657                     "desc": "If needle contains more than one character, only the first is used. This behavior is different from that of strstr().\n\nIf needle is not a string, it is converted to an integer and applied as the ordinal value of a character."
1658                 }
1659             ]
1660         },
1661         {
1662             "name": "strstr",
1663             "desc": "Returns part of haystack string from the first occurrence of needle to the end of haystack.\n\nThis function is case-sensitive. For case-insensitive searches, use stristr().\n\nIf you only want to determine if a particular needle occurs within haystack, use the faster and less memory intensive function strpos() instead.",
1664             "flags": [
1665                 "FunctionIsFoldable"
1666             ],
1667             "return": {
1668                 "type": "Variant",
1669                 "desc": "Returns the portion of string, or FALSE if needle is not found."
1670             },
1671             "args": [
1672                 {
1673                     "name": "haystack",
1674                     "type": "String",
1675                     "desc": "The input string."
1676                 },
1677                 {
1678                     "name": "needle",
1679                     "type": "Variant",
1680                     "desc": "If needle is not a string, it is converted to an integer and applied as the ordinal value of a character."
1681                 },
1682                 {
1683                     "name": "before_needle",
1684                     "type": "Boolean",
1685                     "value": "false",
1686                     "desc": "If TRUE, strstr() returns the part of the haystack before the first occurrence of the needle (excluding the needle)."
1687                 }
1688             ]
1689         },
1690         {
1691             "name": "stristr",
1692             "desc": "Returns all of haystack from the first occurrence of needle to the end.\nneedle and haystack are examined in a case-insensitive manner.",
1693             "flags": [
1694                 "FunctionIsFoldable"
1695             ],
1696             "return": {
1697                 "type": "Variant",
1698                 "desc": "Returns the matched substring. If needle is not found, returns FALSE."
1699             },
1700             "args": [
1701                 {
1702                     "name": "haystack",
1703                     "type": "String",
1704                     "desc": "The string to search in"
1705                 },
1706                 {
1707                     "name": "needle",
1708                     "type": "Variant",
1709                     "desc": "If needle is not a string, it is converted to an integer and applied as the ordinal value of a character."
1710                 }
1711             ]
1712         },
1713         {
1714             "name": "strpbrk",
1715             "desc": "strpbrk() searches the haystack string for a char_list.",
1716             "flags": [
1717                 "FunctionIsFoldable"
1718             ],
1719             "return": {
1720                 "type": "Variant",
1721                 "desc": "Returns a string starting from the character found, or FALSE if it is not found."
1722             },
1723             "args": [
1724                 {
1725                     "name": "haystack",
1726                     "type": "String",
1727                     "desc": "The string where char_list is looked for."
1728                 },
1729                 {
1730                     "name": "char_list",
1731                     "type": "String",
1732                     "desc": "This parameter is case sensitive."
1733                 }
1734             ]
1735         },
1736         {
1737             "name": "strpos",
1738             "desc": "Returns the numeric position of the first occurrence of needle in the haystack string. Unlike the strrpos() before PHP 5, this function can take a full string as the needle parameter and the entire string will be used.",
1739             "flags": [
1740                 "FunctionIsFoldable"
1741             ],
1742             "return": {
1743                 "type": "Variant",
1744                 "desc": "Returns the position as an integer. If needle is not found, strpos() will return boolean FALSE. WarningThis function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or \"\". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function."
1745             },
1746             "args": [
1747                 {
1748                     "name": "haystack",
1749                     "type": "String",
1750                     "desc": "The string to search in"
1751                 },
1752                 {
1753                     "name": "needle",
1754                     "type": "Variant",
1755                     "desc": "If needle is not a string, it is converted to an integer and applied as the ordinal value of a character."
1756                 },
1757                 {
1758                     "name": "offset",
1759                     "type": "Int32",
1760                     "value": "0",
1761                     "desc": "The optional offset parameter allows you to specify which character in haystack to start searching. The position returned is still relative to the beginning of haystack."
1762                 }
1763             ]
1764         },
1765         {
1766             "name": "stripos",
1767             "desc": "Returns the numeric position of the first occurrence of needle in the haystack string.\n\nUnlike strpos(), stripos() is case-insensitive.",
1768             "flags": [
1769                 "FunctionIsFoldable"
1770             ],
1771             "return": {
1772                 "type": "Variant",
1773                 "desc": "If needle is not found, stripos() will return boolean FALSE. WarningThis function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or \"\". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function."
1774             },
1775             "args": [
1776                 {
1777                     "name": "haystack",
1778                     "type": "String",
1779                     "desc": "The string to search in"
1780                 },
1781                 {
1782                     "name": "needle",
1783                     "type": "Variant",
1784                     "desc": "Note that the needle may be a string of one or more characters.\n\nIf needle is not a string, it is converted to an integer and applied as the ordinal value of a character."
1785                 },
1786                 {
1787                     "name": "offset",
1788                     "type": "Int32",
1789                     "value": "0",
1790                     "desc": "The optional offset parameter allows you to specify which character in haystack to start searching. The position returned is still relative to the beginning of haystack."
1791                 }
1792             ]
1793         },
1794         {
1795             "name": "strrpos",
1796             "desc": "Returns the numeric position of the last occurrence of needle in the haystack string. Note that the needle in this case can only be a single character in PHP 4. If a string is passed as the needle, then only the first character of that string will be used.",
1797             "flags": [
1798                 "FunctionIsFoldable"
1799             ],
1800             "return": {
1801                 "type": "Variant",
1802                 "desc": "Returns the position where the needle exists. Returns FALSE if the needle was not found."
1803             },
1804             "args": [
1805                 {
1806                     "name": "haystack",
1807                     "type": "String",
1808                     "desc": "The string to search in."
1809                 },
1810                 {
1811                     "name": "needle",
1812                     "type": "Variant",
1813                     "desc": "If needle is not a string, it is converted to an integer and applied as the ordinal value of a character."
1814                 },
1815                 {
1816                     "name": "offset",
1817                     "type": "Int32",
1818                     "value": "0",
1819                     "desc": "May be specified to begin searching an arbitrary number of characters into the string. Negative values will stop searching at an arbitrary point prior to the end of the string."
1820                 }
1821             ]
1822         },
1823         {
1824             "name": "strripos",
1825             "desc": "Find position of last occurrence of a case-insensitive string in a string. Unlike strrpos(), strripos() is case-insensitive.",
1826             "flags": [
1827                 "FunctionIsFoldable"
1828             ],
1829             "return": {
1830                 "type": "Variant",
1831                 "desc": "Returns the numerical position of the last occurrence of needle. Also note that string positions start at 0, and not 1.\n\nIf needle is not found, FALSE is returned. WarningThis function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or \"\". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function."
1832             },
1833             "args": [
1834                 {
1835                     "name": "haystack",
1836                     "type": "String",
1837                     "desc": "The string to search in"
1838                 },
1839                 {
1840                     "name": "needle",
1841                     "type": "Variant",
1842                     "desc": "Note that the needle may be a string of one or more characters."
1843                 },
1844                 {
1845                     "name": "offset",
1846                     "type": "Int32",
1847                     "value": "0",
1848                     "desc": "The offset parameter may be specified to begin searching an arbitrary number of characters into the string.\n\nNegative offset values will start the search at offset characters from the start of the string."
1849                 }
1850             ]
1851         },
1852         {
1853             "name": "substr_count",
1854             "desc": "substr_count() returns the number of times the needle substring occurs in the haystack string. Please note that needle is case sensitive.\n\nThis function doesn't count overlapped substrings. See the example below!",
1855             "flags": [
1856                 "FunctionIsFoldable"
1857             ],
1858             "return": {
1859                 "type": "Variant",
1860                 "desc": "This functions returns an integer."
1861             },
1862             "args": [
1863                 {
1864                     "name": "haystack",
1865                     "type": "String",
1866                     "desc": "The string to search in"
1867                 },
1868                 {
1869                     "name": "needle",
1870                     "type": "String",
1871                     "desc": "The substring to search for"
1872                 },
1873                 {
1874                     "name": "offset",
1875                     "type": "Int32",
1876                     "value": "0",
1877                     "desc": "The offset where to start counting"
1878                 },
1879                 {
1880                     "name": "length",
1881                     "type": "Int32",
1882                     "value": "0x7FFFFFFF",
1883                     "desc": "The maximum length after the specified offset to search for the substring. It outputs a warning if the offset plus the length is greater than the haystack length."
1884                 }
1885             ]
1886         },
1887         {
1888             "name": "strspn",
1889             "desc": "Returns the length of the first group of consecutive characters from mask found in subject.\n\nIf start and length are omitted, then all of subject will be examined. If they are included, then the effect will be the same as calling strspn(substr($subject, $start, $length), $mask) (see substr for more information).\n\nThe line of code:\n\nwill assign 2 to $var, because the string \"42\" is the first segment from subject to consist only of characters contained within \"1234567890\".",
1890             "flags": [
1891                 "FunctionIsFoldable"
1892             ],
1893             "return": {
1894                 "type": "Variant",
1895                 "desc": "Returns the length of the initial segment of str1 which consists entirely of characters in str2."
1896             },
1897             "args": [
1898                 {
1899                     "name": "str1",
1900                     "type": "String",
1901                     "desc": "The string to examine."
1902                 },
1903                 {
1904                     "name": "str2",
1905                     "type": "String",
1906                     "desc": "The list of allowable characters to include in counted segments."
1907                 },
1908                 {
1909                     "name": "start",
1910                     "type": "Int32",
1911                     "value": "0",
1912                     "desc": "The position in subject to start searching.\n\nIf start is given and is non-negative, then strspn() will begin examining subject at the start'th position. For instance, in the string 'abcdef', the character at position 0 is 'a', the character at position 2 is 'c', and so forth.\n\nIf start is given and is negative, then strspn() will begin examining subject at the start'th position from the end of subject."
1913                 },
1914                 {
1915                     "name": "length",
1916                     "type": "Int32",
1917                     "value": "0x7FFFFFFF",
1918                     "desc": "The length of the segment from subject to examine.\n\nIf length is given and is non-negative, then subject will be examined for length characters after the starting position.\n\nIf lengthis given and is negative, then subject will be examined from the starting position up to length characters from the end of subject."
1919                 }
1920             ]
1921         },
1922         {
1923             "name": "strcspn",
1924             "desc": "Returns the length of the initial segment of str1 which does not contain any of the characters in str2.",
1925             "flags": [
1926                 "FunctionIsFoldable"
1927             ],
1928             "return": {
1929                 "type": "Variant",
1930                 "desc": "Returns the length of the segment as an integer."
1931             },
1932             "args": [
1933                 {
1934                     "name": "str1",
1935                     "type": "String",
1936                     "desc": "The first string."
1937                 },
1938                 {
1939                     "name": "str2",
1940                     "type": "String",
1941                     "desc": "The second string."
1942                 },
1943                 {
1944                     "name": "start",
1945                     "type": "Int32",
1946                     "value": "0",
1947                     "desc": "The start position of the string to examine."
1948                 },
1949                 {
1950                     "name": "length",
1951                     "type": "Int32",
1952                     "value": "0x7FFFFFFF",
1953                     "desc": "The length of the string to examine."
1954                 }
1955             ]
1956         },
1957         {
1958             "name": "strlen",
1959             "desc": "Returns the length of the given string.",
1960             "flags": [
1961                 "FunctionIsFoldable"
1962             ],
1963             "return": {
1964                 "type": "Variant",
1965                 "desc": "The length of the string on success, and 0 if the string is empty."
1966             },
1967             "args": [
1968                 {
1969                     "name": "vstr",
1970                     "type": "Variant",
1971                     "desc": "The string being measured for length."
1972                 }
1973             ]
1974         },
1975         {
1976             "name": "count_chars",
1977             "desc": "Counts the number of occurrences of every byte-value (0..255) in string and returns it in various ways.",
1978             "flags": [
1979                 "FunctionIsFoldable"
1980             ],
1981             "return": {
1982                 "type": "Variant",
1983                 "desc": "Depending on mode count_chars() returns one of the following: 0 - an array with the byte-value as key and the frequency of every byte as value. 1 - same as 0 but only byte-values with a frequency greater than zero are listed. 2 - same as 0 but only byte-values with a frequency equal to zero are listed. 3 - a string containing all unique characters is returned. 4 - a string containing all not used characters is returned."
1984             },
1985             "args": [
1986                 {
1987                     "name": "str",
1988                     "type": "String",
1989                     "desc": "The examined string."
1990                 },
1991                 {
1992                     "name": "mode",
1993                     "type": "Int64",
1994                     "value": "0",
1995                     "desc": "See return values."
1996                 }
1997             ]
1998         },
1999         {
2000             "name": "str_word_count",
2001             "desc": "Counts the number of words inside string. If the optional format is not specified, then the return value will be an integer representing the number of words found. In the event the format is specified, the return value will be an array, content of which is dependent on the format. The possible value for the format and the resultant outputs are listed below.\n\nFor the purpose of this function, 'word' is defined as a locale dependent string containing alphabetic characters, which also may contain, but not start with \"'\" and \"-\" characters.",
2002             "flags": [
2003                 "FunctionIsFoldable"
2004             ],
2005             "return": {
2006                 "type": "Variant",
2007                 "desc": "Returns an array or an integer, depending on the format chosen."
2008             },
2009             "args": [
2010                 {
2011                     "name": "str",
2012                     "type": "String",
2013                     "desc": "The string"
2014                 },
2015                 {
2016                     "name": "format",
2017                     "type": "Int64",
2018                     "value": "0",
2019                     "desc": "Specify the return value of this function. The current supported values are: 0 - returns the number of words found 1 - returns an array containing all the words found inside the string 2 - returns an associative array, where the key is the numeric position of the word inside the string and the value is the actual word itself"
2020                 },
2021                 {
2022                     "name": "charlist",
2023                     "type": "String",
2024                     "value": "\"\"",
2025                     "desc": "A list of additional characters which will be considered as 'word'"
2026                 }
2027             ]
2028         },
2029         {
2030             "name": "levenshtein",
2031             "desc": "The Levenshtein distance is defined as the minimal number of characters you have to replace, insert or delete to transform str1 into str2. The complexity of the algorithm is O(m*n), where n and m are the length of str1 and str2 (rather good when compared to similar_text(), which is O(max(n,m)**3), but still expensive).\n\nIn its simplest form the function will take only the two strings as parameter and will calculate just the number of insert, replace and delete operations needed to transform str1 into str2.\n\nA second variant will take three additional parameters that define the cost of insert, replace and delete operations. This is more general and adaptive than variant one, but not as efficient.",
2032             "flags": [
2033                 "FunctionIsFoldable"
2034             ],
2035             "return": {
2036                 "type": "Int64",
2037                 "desc": "This function returns the Levenshtein-Distance between the two argument strings or -1, if one of the argument strings is longer than the limit of 255 characters."
2038             },
2039             "args": [
2040                 {
2041                     "name": "str1",
2042                     "type": "String",
2043                     "desc": "One of the strings being evaluated for Levenshtein distance."
2044                 },
2045                 {
2046                     "name": "str2",
2047                     "type": "String",
2048                     "desc": "One of the strings being evaluated for Levenshtein distance."
2049                 },
2050                 {
2051                     "name": "cost_ins",
2052                     "type": "Int32",
2053                     "value": "1",
2054                     "desc": "Defines the cost of insertion."
2055                 },
2056                 {
2057                     "name": "cost_rep",
2058                     "type": "Int32",
2059                     "value": "1",
2060                     "desc": "Defines the cost of replacement."
2061                 },
2062                 {
2063                     "name": "cost_del",
2064                     "type": "Int32",
2065                     "value": "1",
2066                     "desc": "Defines the cost of deletion."
2067                 }
2068             ]
2069         },
2070         {
2071             "name": "similar_text",
2072             "desc": "This calculates the similarity between two strings as described in Oliver [1993]. Note that this implementation does not use a stack as in Oliver's pseudo code, but recursive calls which may or may not speed up the whole process. Note also that the complexity of this algorithm is O(N**3) where N is the length of the longest string.",
2073             "flags": [
2074             ],
2075             "return": {
2076                 "type": "Int64",
2077                 "desc": "Returns the number of matching chars in both strings."
2078             },
2079             "args": [
2080                 {
2081                     "name": "first",
2082                     "type": "String",
2083                     "desc": "The first string."
2084                 },
2085                 {
2086                     "name": "second",
2087                     "type": "String",
2088                     "desc": "The second string."
2089                 },
2090                 {
2091                     "name": "percent",
2092                     "type": "Variant",
2093                     "value": "null",
2094                     "desc": "By passing a reference as third argument, similar_text() will calculate the similarity in percent for you.",
2095                     "ref": true
2096                 }
2097             ]
2098         },
2099         {
2100             "name": "soundex",
2101             "desc": "Calculates the soundex key of str.\n\nSoundex keys have the property that words pronounced similarly produce the same soundex key, and can thus be used to simplify searches in databases where you know the pronunciation but not the spelling. This soundex function returns a string 4 characters long, starting with a letter.\n\nThis particular soundex function is one described by Donald Knuth in \"The Art Of Computer Programming, vol. 3: Sorting And Searching\", Addison-Wesley (1973), pp. 391-392.",
2102             "flags": [
2103                 "FunctionIsFoldable"
2104             ],
2105             "return": {
2106                 "type": "Variant",
2107                 "desc": "Returns the soundex key as a string."
2108             },
2109             "args": [
2110                 {
2111                     "name": "str",
2112                     "type": "String",
2113                     "desc": "The input string."
2114                 }
2115             ]
2116         },
2117         {
2118             "name": "metaphone",
2119             "desc": "Calculates the metaphone key of str.\n\nSimilar to soundex() metaphone creates the same key for similar sounding words. It's more accurate than soundex() as it knows the basic rules of English pronunciation. The metaphone generated keys are of variable length.\n\nMetaphone was developed by Lawrence Philips <lphilips at verity dot com>. It is described in [\"Practical Algorithms for Programmers\", Binstock & Rex, Addison Wesley, 1995].",
2120             "flags": [
2121                 "FunctionIsFoldable"
2122             ],
2123             "return": {
2124                 "type": "Variant",
2125                 "desc": "Returns the metaphone key as a string, or FALSE on failure."
2126             },
2127             "args": [
2128                 {
2129                     "name": "str",
2130                     "type": "String",
2131                     "desc": "The input string."
2132                 },
2133                 {
2134                     "name": "phones",
2135                     "type": "Int32",
2136                     "value": "0",
2137                     "desc": "This parameter restricts the returned metaphone key to phonemes characters in length. The default value of 0 means no restriction."
2138                 }
2139             ]
2140         },
2141         {
2142             "name": "parse_str",
2143             "desc": "Parses str as if it were the query string passed via a URL and sets variables in the current scope.\n\nTo get the current QUERY_STRING, you may use the variable $_SERVER['QUERY_STRING']. Also, you may want to read the section on variables from external sources.\n\nThe magic_quotes_gpc setting affects the output of this function, as parse_str() uses the same mechanism that PHP uses to populate the $_GET, $_POST, etc. variables.",
2144             "flags": [
2145             ],
2146             "return": {
2147                 "type": null,
2148                 "desc": "No value is returned."
2149             },
2150             "args": [
2151                 {
2152                     "name": "str",
2153                     "type": "String",
2154                     "desc": "The input string."
2155                 },
2156                 {
2157                     "name": "arr",
2158                     "type": "Variant",
2159                     "value": "null",
2160                     "desc": "If the second parameter arr is present, variables are stored in this variable as array elements instead.",
2161                     "ref": true
2162                 }
2163             ]
2164         }
2165     ],
2166     "classes": [
2167     ]