preg_replace保持:\

I'm trying to use regular expressions to work on some strings.

At the moment i'm using this expression $var1=trim(preg_replace('/[^A-Za-z0-9\-\']/', ' ', $myString)); But with this one i'm loosing some characters i want to keep. Those characters are '.' '\' and ':'. Can someone give me some hints to maintain those characters? Thanks for your time

UPDATE Using Adlan string i got the right result. Now i have another problem but is not inerent with the topic. Anyway i get this string after preg_repleace Found some changes in D:\EER Data\project\myfile.csv In this string there are correct backslashes but when i call json_encode($myString) backslashes are gone..

UPDATE2 OK , i found the problem and i know how to solve it. I have to put double \ where there is only a . So this string D:\EER Data\project\myfile.csv should become D:\\EER Data\\project\\myfile.csv How can i achieve this with preg_replace? Thanks for the help

Try use:

/[^A-Za-z0-9\-\'\\\.\:]/

Code: (Demo)

$myString=<<<TEXT
Found some changes in D:\EER Data\project\myfile.csv
TEXT;

$var1=trim(preg_replace("~[^a-z\d.:'\\\-]~i", ' ', $myString));  // keep letters, numbers dot, colon, single-quote, backslash, and hyphen

echo "$var1
";

echo json_encode($var1);  // it's a good idea to keep the escaping \ while in json.

Output:

Found some changes in D:\EER Data\project\myfile.csv
"Found some changes in D:\\EER Data\\project\\myfile.csv"