replace ereg_replace with preg_replace

13,640

Solution 1

To port ereg_replace to preg_replace you need to put the regex between a pair of delimiter

Also your regx is [\] is invalid to be used for preg_replace as the \ is escaping the closing char class ]

The correct port is

preg_replace('/[\\\]/','',$theData) 

Also since the char class has just one char there is no real need of char class you can just say:

preg_replace('/\\\/','',$theData) 

Since you are replace just a single char, using regex for this is not recommended. You should be using a simple text replacement using str_replace as:

str_replace('\\','',$data);

Solution 2

str_replace("\\","",$theData);

But I seriously doubt you need that replace at all. most likely you need some other operation.
What is this replace for?

Share:
13,640
user359187
Author by

user359187

Updated on June 19, 2022

Comments

  • user359187
    user359187 almost 2 years

    Hi need to change the function ereg_replace("[\]", "", $theData) to preg_replace

  • Yanick Rochon
    Yanick Rochon over 13 years
    '/\\\/' will lead into escaping the forward slash by preg_replace, you need 4 backslashes
  • Matthew Flaschen
    Matthew Flaschen over 13 years
    @Yanick, no it won't. preg_replace sees it as /\\/, which it decodes as a literal backslash within delimiters. Note that '/\\\\/' is also correct, because \\ and \ can both encode a backslash in a string literal. Note that \/ is not a string escape.
  • Scott Chu
    Scott Chu almost 12 years
    A better way to explain why is because preg_replace knows the last / is a delimiter rather than a character in pattern body, so it sees 3rd backslash as a literal character. Then we know "/\\\n/" doesn't equal to "/\\\\n" since 3rd backslash will escape n.