从包含文件调用时,PHP preg_replace不替换\ r \ n

时间:2015-10-31 10:09:54

标签: php preg-replace

我正在使用Linux(14.04.2 LTS可信赖)。

在我的PHP脚本中,我输出从MySQL表中的几列中检索的数据(varchar)。

某些列中的数据包含新行/段落,空格,句点和许多其他字符。例如,以下是我正在使用的值之一:

var_dump($value2)显示string(16) "\r\n\r\nredness."

对于某些列,我输入以下代码以在输出...

之前删除某些不需要的数据
$value3 = preg_replace('#[ \,\";\.\n\r]#', '', $value2);
echo $value3;

输出:redness ......它有效。

意识到我经常使用上面的代码(以及此处未提供的其他代码),我决定创建一个包含它的函数,然后调用该函数(包含在另一个文件中)来输出剩余的列。 / p>

然而,当我调用该函数时,\n\r似乎不起作用,输出显示这些字符:

\r\n\r\nredness

根据本论坛相关问题的答案,我尝试了以下内容:

$value3 = preg_replace('#[ \\\r|\\\r\\\n|\\\n|\,|\"|;|\.]#', '', $value2);

输出:edess

专注于\r\n,我尝试了$value3 = preg_replace('#[\r\n]+#', '', $value2);

输出:\r\n\r\nredness

我也试过$value3 = str_replace(array("\n", "\r"), '', $value2);

输出:\r\n\r\nredness.

我尝试了$value3 = trim(preg_replace('/\s\s+/', ' ', $value2));

输出:\r\n\r\nredness.

我尝试了$value3 = preg_replace('/\s+/', '', $value2);

输出:\r\n\r\nredness.

我尝试了echo preg_replace('/[\r\n]/','',$value2);

输出:\r\n\r\nredness.

我尝试了echo preg_replace('/(\\r)(\\n)/','',$value2);

输出\r\n\r\nredness.

如果我从包含文件中的某个函数调用它,preg_replace为什么不删除\r和/或\n

1 个答案:

答案 0 :(得分:0)

见评论。我创建了一个数组来存储数据库表中的列名...

$Command = "DESCRIBE {$Table}";
$Command = mysqli_query($mysqli, $Command) or die("Error: ".mysqli_error($mysqli));

if($Command)
{
    $TableField = array();

    while($row = mysqli_fetch_array($Command)) 
    {
        $TableField[] = $row['Field'];
    }
}

...但是存储值的数组被分配了错误的键:

while($newArray = mysqli_fetch_array($Execute)) foreach($TableField as $key => $value) {$GoodData[$key] = $newArray[$key];}

...当为阵列分配了正确的密钥时,问题就消失了:

while($newArray = mysqli_fetch_array($Execute)) {foreach($TableField as $key => $value) {$GoodData[$value] = $newArray[$value];}