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"