preg_replace保持:\

时间:2018-02-26 16:23:19

标签: php regex preg-replace

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

目前我正在使用此表达式$var1=trim(preg_replace('/[^A-Za-z0-9\-\']/', ' ', $myString)); 但是有了这个我失去了一些我想留下的角色。 那些角色是'。' ' \'和':'。有人可以给我一些提示来维护这些角色吗?谢谢你的时间

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

UPDATE2 好的,我发现了问题,我知道如何解决它。 我必须把双\ \只有一个。 因此,此字符串D:\EER Data\project\myfile.csv应变为D:\\EER Data\\project\\myfile.csv 我如何用preg_replace实现这一目标?谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

尝试使用:

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

答案 1 :(得分:0)

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