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?
Author by
user359187
Updated on June 19, 2022Comments
-
user359187 almost 2 years
Hi need to change the function
ereg_replace("[\]", "", $theData)
to preg_replace -
Yanick Rochon over 13 years'/\\\/' will lead into escaping the forward slash by preg_replace, you need 4 backslashes
-
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 almost 12 yearsA 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.