【发布时间】:2015-10-22 09:52:12
【问题描述】:
我正在使用数据表在我的网站上显示我的记录,但是当我在输入字段中输入这些字符时:( € OR ‘ OR ’) 我的数据表没有显示这些字符。显示所有其他特殊字符。
网站的其余部分显示所有字符,包括:( € OR ‘ OR ’)?
static function data_output ( $columns, $data )
{
$out = array();
for ( $i=0, $ien=count($data) ; $i<$ien ; $i++ ) {
$row = array();
for ( $j=0, $jen=count($columns) ; $j<$jen ; $j++ ) {
$column = $columns[$j];
// Is there a formatter?
if ( isset( $column['formatter'] ) ) {
$row[ $column['dt'] ] = $column['formatter']( $data[$i][ $column['db'] ], $data[$i] );
}
else {
$row[ $column['dt'] ] = $data[$i][ $columns[$j]['db'] ];
}
}
$row = self::encodeutf8($row);
$out[] = $row;
}
return $out;
}
private static function encodeutf8($d) {
if (is_array($d)) {
foreach ($d as $k => $v) {
$d[$k] = self::encodeutf8($v);
}
} else if (is_string ($d)) {
return utf8_encode($d);
}
return $d;
}
我自己添加了函数:encodeutf8。我这样做是因为在那之前,每次我添加一个带有特殊字符的项目时,我的表都会崩溃。
我的专栏是这样的:
$columns = [
['db' => 'foto1', 'dt' => 0, 'formatter' => function($d, $row) {
if($d == "") {
return "";
}
return "<img class='thumb' src='/" . $d . "'/>";
}],
['db' => 'p_categorie', 'dt' => 1],
['db' => 'p_genre', 'dt' => 2],
['db' => 'p_aantal', 'dt' => 3],
['db' => 'p_prijs', 'dt' => 4, 'formatter' => function($d, $row){
if($d == '0.00'){
return "N.o.t.k";
}
else{
return "€" .$d.",-";
}
}],
['db' => 'w_naam', 'dt' => 5],
['db' => 'p_artiest', 'dt' => 6, 'formatter' => function($d, $row){
if($d != ''){
return $d;
}
else{
return "N.V.T.";
}
}],
['db' => 'p_medium', 'dt' => 7],
['db' => 'p_titel', 'dt' => 8],
['db' => 'p_conditie', 'dt' => 9],
['db' => 'p_bijzonderheid', 'dt' => 10],
['db' => 'p_datum', 'dt' => 11, 'formatter' => function($d, $row) {
return "<a style='text-decoration:none; color:black;' title='".$d."'>".date('d-M-Y', strtotime($d))."</a>";
}],
['db' => 'p_id', 'dt' => 12, 'formatter' => function($d, $row) {
return "<a data-id='" . $d . "' href='/productdetail?p_id=" . $d . "'>Bekijk</a>";
}],
];
我期待任何回复!
【问题讨论】:
标签: encoding datatables special-characters utf8-decode