ID: 23903 Updated by: [EMAIL PROTECTED] Reported By: mnilsson at bowesnet dot com -Status: Assigned +Status: Bogus Bug Type: PCRE related Operating System: linux 2.4.18 PHP Version: 4.3.2 Assigned To: andrei New Comment:
"That's just how it works. It matches the whole string on the first try and then tries again after the 'c'. Perl works the same way. A better way would be to use (.+) actually." --Andrei So not any bug.. Previous Comments: ------------------------------------------------------------------------ [2003-06-06 03:05:05] [EMAIL PROTECTED] Andrei, is this documentation issue or real bug? :) ------------------------------------------------------------------------ [2003-05-30 15:12:29] [EMAIL PROTECTED] Smaller example: echo preg_replace ("/(.*)/", "http://\$1", "abc"),"\n"; Output: http://abchttp:// This doesn't look correct to me. However, your search pattern doesn't look very reasonable - the normal way to prepend a string to another string is the "." operator: $bannerad_url = 'http://' . $_POST['bannerad_url']; ------------------------------------------------------------------------ [2003-05-30 13:08:35] mnilsson at bowesnet dot com PROBLEM: preg_replace does not return the proper value with a * in the regular expression. INPUT: $_POST['bannerad_url'] = 'www.canoe.ca'; PROCESS CODE: $_POST['bannerad_url'] = trim($_POST['bannerad_url']); if (preg_match ("/^http:\/\/(.*)/i", $_POST['bannerad_url']) > 0) $bannerad_url = $_POST['bannerad_url']; else $bannerad_url = preg_replace ("/(.*)/", "http://\$1", $_POST['bannerad_url']); OUTPUT: echo $bannerad_url; -------> http:// www.canoe.cahttp:// FIX: INPUT: $_POST['bannerad_url'] = 'www.canoe.ca'; PROCESS CODE: $_POST['bannerad_url'] = trim($_POST['bannerad_url']); if (preg_match ("/^http:\/\/(.+)/i", $_POST['bannerad_url']) > 0) $bannerad_url = $_POST['bannerad_url']; else $bannerad_url = preg_replace ("/(.+)/", "http://\$1", $_POST['bannerad_url']); OUTPUT: echo $bannerad_url; -------> http://www.canoe.ca NOTES: I was able to reproduce this several times. It seems to be related to the *, but replacing it with a + solves the problem. Thanks. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=23903&edit=1