2012-12-04 135 views
-1

我需要在每个数组值的开始处添加一个<p>标记,并在每个数组值的末尾添加一个关闭</p>标记。替换数组中的值

如果有[]分隔符,然后他们需要与<p class="myclass">

Array 
(
    [0] => [This is a line of text 
    [1] => and another 
    [2] => and yet another.] [This is another line of text 
    [3] => and another 
    [4] => and another] [OK, so you get the idea. 
) 

代替上述阵列应该成为:

Array 
(
    [0] => <p class="myclass">This is a line of text</p> 
    [1] => <p>and another</p> 
    [2] => <p>and yet another.</p> <p class="myclass">This is another line of text</p> 
    [3] => <p>and another</p> 
    [4] => <p>and another</p> <p class="myclass">OK, so you get the idea.</p> 
) 

的问题是:使用foreach循环,如何我从第一个数组到第二个数组?

+0

你的问题非常混乱,正是你想做的事? –

回答

1
for($i = 0; $i < count($array); $i++) { 
    $array[$i] = '<p>'.$array[$i].'</p>'; 
    $array[$i] = preg_replace('/\]/', '</p>', $array[$i]); 
    $array[$i] = preg_replace('/\[/', '<p class="myclass">', $array[$i]); 
    $array[$i] = preg_replace('/<p><p/', '<p', $array[$i]); 
} 

See Live Example

+1

谢谢!这工作完美。我很难让这个工作正确。 – NaN

+0

非常欢迎。我活着服务:) – Maritim

3
$myArray = array(
    '[This is a line of text', 
    'and another', 
    'and yet another.] [This is another line of text', 
    'and another', 
    'and another] [OK, so you get the idea.', 
); 

array_walk($myArray,'pTagger'); 

function pTagger(&$value) { 
    $value = str_replace(array('[',']'),array('<p class="myClass">','</p>'),$value); 
    if (substr($value,0,2) !== '<p') $value = '<p>' . $value; 
    if (substr($value,-4) !== '</p>') $value .= '</p>'; 
} 

var_dump($myArray); 
+0

谢谢马克的答案! – NaN