0

我有一个数组,其中的一些元素充满了很多空格和\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>',
)
4

3 回答 3

1

尝试这个:

// loop through each element and apply the function
foreach($myArray as $key => $value) {
    $myArray[$key] = preg_replace('/\s+/', '', $value);
}

或制作一个执行此操作的函数并使用array_walk

请注意,我将您的空格替换为空字符串,而不是单个空格(就像您和其他答案一样)。这样,您将完全删除空格,而不是用空格替换它。

于 2013-10-17T23:02:28.440 回答
1

您可以使用 foreach 循环来遍历数组中的所有元素:

foreach($myArray as $key => $val)
{
    $myArray[$key]=preg_replace( '/\s+/', ' ', $value);
}

我实际上并没有检查过代码,也没有对正则表达式很好,但假设你的替换工作正常,它应该很好。

于 2013-10-17T23:02:58.850 回答
1
  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);
    
  2. 如果你想'<div> </div>'成为'<div></div>',你不应该替换'/\s+/'' ',而是替换为''

  3. \n'/\s+/'仅在双引号内而不是在单引号内被视为换行符(因此匹配)。更改或修复您'<b>\n</b>'"<b>\n</b>"正则表达式。

于 2013-10-17T23:05:31.463 回答