سؤال

I do not want to use stripslashes() because I only want to replace "\\" with "\".

I tried preg_replace("/\\\\/", "\\", '2\\sin(\\pi s)\\Gamma(s)\\zeta(s) = i\\oint_C \\frac{-x^{s-1}}{e^x -1} \\mathrm{d}x');

Which to my disapointment returns: 2\\sin(\\pi s)\\Gamma(s)\\zeta(s) = i\\oint_C \\frac{-x^{s-1}}{e^x -1} \\mathrm{d}x

Various online regex testers indicate that the above should work. Why is it not?

هل كانت مفيدة؟

المحلول

First, like many other people are stating, regular expressions might be too heavy of a tool for the job, the solution you are using should work however.

$newstr = preg_replace('/\\\\/', '\\', $mystr);

Will give you the expected result, note that preg_replace returns a new string and does not modify the existing one in-place which may be what you are getting hung up on.

You can also use the less expensive str_replace in this case:

$newstr = str_replace('\\\\', '\\', $mystr);

This approach costs much less CPU time and memory since it doesn't need to compile a regular expression for a simple task such as this.

نصائح أخرى

You dont need to use regex for this, use

$newstr = str_replace("\\\\", "\\", $mystr);

See the str_replace docs

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top