Fab*_*bio 3 php regex escaping
再会!
我在使用preg_replace和 utf-8 字符时遇到了一些麻烦。以下代码片段:
$v = "line1\nline2\r\n?? ?????? ?? ?????????????";
print $v;
print preg_replace("#\R#", "", $v);
print preg_replace("\n", "", $v);
Run Code Online (Sandbox Code Playgroud)
返回以下输出:
line1
line2
?? ?????? ?? ?????????????
line1line2?? ?????? ?? ?????????????
line1line2
?? ?????? ?? ????????????? ???
Run Code Online (Sandbox Code Playgroud)
出于某种原因?\R使用时不可读,但\n使用时不受影响。由于\R特定于 PHP,我想这会产生问题。有没有人知道我如何在 中使用\R(不被 接受str_replace)preg_replace?我担心这个问题可能会发生在许多其他情况下,不仅仅是资本。
由于您有一个 Unicode 输入,您必须将/u标志传递给正则表达式以正确处理输入:
$v = "line1\nline2\r\n?? ?????? ?? ?????????????";
echo preg_replace('/\R/u', "", $v);
// => line1line2?? ?????? ?? ?????????????
Run Code Online (Sandbox Code Playgroud)
/u当模式和输入都可以包含 Unicode 字符串文字时,需要此标志。