preg_replace 保留:\

preg_replace keep : \

我正在尝试使用正则表达式处理某些字符串。

目前我正在使用这个表达式$var1=trim(preg_replace('/[^A-Za-z0-9\-\']/', ' ', $myString)); 但是有了这个,我失去了一些我想保留的角色。 这些字符是“.” '\' 和 ':'。有人可以给我一些提示来保持这些角色吗?感谢您的宝贵时间

更新 使用 Adlan 字符串我得到了正确的结果。现在我有另一个问题,但与该主题无关。无论如何我在 preg_repleace Found some changes in D:\EER Data\project\myfile.csv 之后得到这个字符串 在这个字符串中有正确的反斜杠但是当我调用 json_encode($myString) 反斜杠消失了..

更新2 好的,我找到了问题并且我知道如何解决它。 我必须把双 \ 放在只有一个的地方。 所以这个字符串 D:\EER Data\project\myfile.csv 应该变成 D:\EER Data\project\myfile.csv 我如何使用 preg_replace 实现此目的?感谢帮助

尝试使用:

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

代码:(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\n";

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

输出:

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