我正在尝试给每个textarea
一个名称,以便我以后可以使用它们发送回数据库。
使用此代码,我得到了一些奇怪的结果,我猜它是因为我使用str_replace
。
以下是代码:
$description2 = mysql_result($product, 0, 'productDescription2');
$totalteknisk = preg_match_all('/x(a|b|d|e)/', $description2, $matches);
$searchArray = array('xa', 'xb', 'xc', 'xd', 'xe');
if ($description2 !=""){
for($z=1;$z <= $totalteknisk; $z++){
$xa = '<textarea name="'. $z .'" style="background-color:#FFFFFF;resize: none; height: 20px; width: 200px;">';
$z++;
$xb ='</textarea><textarea name="'. $z .'" style="background-color:#FFFFFF;resize: none; height: 20px; width: 200px;">';
$z++;
$xc = '</textarea><br>';
$xd = '<textarea name="'. $z .'" style="background-color:#EAF2D3;resize: none; height: 20px; width: 200px;">';
$z++;
$xe = '</textarea><textarea name="'. $z .'" style="background-color:#EAF2D3;resize: none; height: 20px; width: 200px;">';
$replaceArray = array($xa, $xb, $xc, $xd, $xe);
$teknisk .= str_replace($searchArray, $replaceArray, $description2);
}
}
数据库xa1xb2xcxd3xe4xcxa5xb6xc
中的示例字符串(description2)
正如你所看到的那样,我试图将它全部循环并将值1赋予$totalteknisk
。
我愿意就如何使这项工作提出建议。
答案 0 :(得分:0)
通过使用preg_replace_callback(...)
,我解决了一点不同$description2 = 'xa1xb2xcxd3xe4xcxa5xb6xc';
$html = preg_replace_callback('/x(?:a|b|c|d|e)/', function($match) {
static $count;
$count++;
switch($match[0]) {
case 'xa':
return "<textarea name=\"$count\" style=\"background-color:#FFFFFF;resize: none; height: 20px; width: 200px;\">";
case 'xb':
return "</textarea><textarea name=\"$count\" style=\"background-color:#FFFFFF;resize: none; height: 20px; width: 200px;\">";
case 'xc':
return "</textarea><br />";
case 'xd':
return "<textarea name=\"$count\" style=\"background-color:#EAF2D3;resize: none; height: 20px; width: 200px;\">";
case 'xe':
return "</textarea><textarea name=\"$count\" style=\"background-color:#EAF2D3;resize: none; height: 20px; width: 200px;\">";
}
}, $description2);
$teknisk .= $html;
我还建议,你不要只使用textareas中'name'属性的数字。您可以考虑使用其他名称,例如fields[$count]
,然后按$_POST['fields'] ...