我正在使用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
?
答案 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];}