preg_replace保持:\

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

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

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

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

UPDATE2 strong> OK,我发现问题,我知道如何解决它。 我必须把双\ \只有一个。 So 这个字符串 D:\ EER Data \ project \ myfile.csv code>应该成为 D:\\ EER Data \\ project \\ myfile.csv code> 我怎样才能实现这个目的 preg_replace函数? 感谢您的帮助 p> div>

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"