我有一个数组,其中一些元素充满了大量的空白和\n
。我想删除这个空格并\n
。
我一直在使用以下代码,但编译器说我的代码不适用于数组。
//My code that removes white-space
$input = preg_replace( '/\s+/', ' ', $myArray);
//Sample of array with white space
$myArray = array(
'extra spaces' => '<div> </div>',
'return' => '<b>\n</b>',
)
//What I want the array to look like
$myArray = array(
'extra spaces' => '<div></div>',
'return' => '<b></b>',
)
答案 0 :(得分:1)
试试这个:
// loop through each element and apply the function
foreach($myArray as $key => $value) {
$myArray[$key] = preg_replace('/\s+/', '', $value);
}
或者创建一个执行此操作并使用array_walk
的函数请注意,我用空字符串替换你的空格,而不是用一个空格(就像你和其他答案一样)。这样您就可以完全删除空格,而不是用空格替换它。
答案 1 :(得分:1)
您可以使用foreach循环来遍历数组中的所有元素:
foreach($myArray as $key => $val)
{
$myArray[$key]=preg_replace( '/\s+/', ' ', $value);
}
我实际上没有检查过代码,并且一直没有使用正则表达式,但假设你的替换工作正常,它应该是好的。
答案 2 :(得分:1)
当您致电preg_replace
时,尚未定义$myArray
。切换$myArray
的定义和preg_replace
的调用:
//Sample of array with white space#
$myArray = array(
'extra spaces' => '<div> </div>',
'return' => '<b>\n</b>',
)
//My code that removes white-space
$input = preg_replace( '/\s+/', ' ', $myArray);
如果您希望'<div> </div>'
成为'<div></div>'
,则不应将'/\s+/'
替换为' '
,而应替换为''
。
\n
仅在双引号内被视为换行符(因此匹配'/\s+/'
),而不是单引号内。将'<b>\n</b>'
更改为"<b>\n</b>"
或修正正则表达式。