Smudly Posted October 22, 2010 Share Posted October 22, 2010 I'm having an issue with users uploading files with a Semi Colon in the file name. I am currently using a script that replaces characters within the file name, however, when I try to add a ";" as invalid characters to replace, it is like the semi-colon just stops the script, as the file does not upload (no errors are displayed). Here's the code I'm working with: $valid_chars_regex = '.A-Z0-9_ !@#$%^&()+={}\[\],~`-'; $file_name = preg_replace('/[^'.$valid_chars_regex.']|\'.+$/i', "", basename($_FILES[$upload_name]['name'])); if (strlen($file_name) == 0 || strlen($file_name) > $MAX_FILENAME_LENGTH) { HandleError("Invalid file name"); exit(0); } I tried placing the semi colon all over the place in the preg_replace function, but nothing seems to work. How can I do this? Quote Link to comment https://forums.phpfreaks.com/topic/216528-replacing-a-semicolon-in-a-string/ Share on other sites More sharing options...
atrum Posted October 22, 2010 Share Posted October 22, 2010 You have to escape the semi-colon I think. So put a backslash before the semi-colon Quote Link to comment https://forums.phpfreaks.com/topic/216528-replacing-a-semicolon-in-a-string/#findComment-1125071 Share on other sites More sharing options...
dreamwest Posted October 22, 2010 Share Posted October 22, 2010 Theres a better way without using preg_replace, you can even replace regex patterns $remove = array(';',"'",'/'); $file_name = str_replace($remove,'',basename($_FILES[$upload_name]['name']); see so much simpler.. Quote Link to comment https://forums.phpfreaks.com/topic/216528-replacing-a-semicolon-in-a-string/#findComment-1125134 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.