Re: is_prefix() - checking wheather $A is prefix for $B
| From: | Silvio Porcellana | Date: | Sat, 29 Dec 2007 12:49:30 +0000 |
| Subject: | Re: is_prefix() - checking wheather $A is prefix for $B | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-266351@lists.php.net to get a copy of this message | ||
You should benchmark and tell us - anyway, just looking at the code, I'd say 'is_prefix2()' is faster since there's 1 function call instead of 2
AmirBehzad Eslami wrote:
In case you haven't realized it, I have already written two functions to check for a prefix !! The question is: Which function is better? (is_prefix1() or is_prefix2()) On 12/29/07, Zoltán Németh <znemeth@alterationx.hu> wrote:-- Antinori and Partners - http://www.antinoriandpartners.com PHP solutions - in Italy2007. 12. 29, szombat keltezéssel 13.39-kor AmirBehzad Eslami ezt írta:I want to write a function to check whether string $A is a prefix for string $B or not.if (strpos($B, $A) === 0) { echo '$B begins with $A'; } else { echo '$B does not begin with $A'; } greets Zoltán NémethI writing this function in order to prevent directory traversal during a download request. (e.g., download.php?file=..\index.php) I want to make sure that the realpath() of the requested file is within the realpath() of the download-directory. Trying to make sure that the the $download_dir is a prefix for $filepath. @see: http://en.wikipedia.org/wiki/Directory_traversal ** *TWO FUNCTIONS:* function is_prefix1($prefix, $str) {return (0 == strncasecmp($prefix, $str, strlen($prefix)));} function is_prefix2($prefix, $str) {return (0 === stripos($str, $prefix));} *USAGE:* if (is_prefix1('a', 'abcdef')) echo 'prefix1 returned True!', '<br />'; if (is_prefix2('a', 'abcdef')) echo 'prefix2 returned True!', '<br />'; ------------------------ Do these functions do the same job? Which one provides better performance? -behzad