【发布时间】:2017-03-15 23:28:10
【问题描述】:
我从 javascript 获取数据值并附加一个带有参数的 smarty 模板。使用 smarty 函数,我想用 php 分解字符串。
HTML:
<div class="item-wrapper pre_element_block draggable-column ui-widget-content" data-floated_width="col-md-12" data-width_info="12">
这是javascript:
function row_droppable (droppableContainer) {
$(droppableContainer).on('drop',function(event,ui){
if(ui.draggable.hasClass('draggable-column')) {
id = get_random_string();
var grid = ui.draggable.attr("data-width_info");
gridRow = $(`{include file=$oPlugin->cAdminmenuPfad|cat:'templates/ns.cs.grid_row.tpl' grid='` + grid + `' idUnique='`+id+`'}`).appendTo(droppableContainer);
}
});
}
在
模板/ns.cs.grid_row.tpl
我打电话:
{js_string_convert string=$grid}
这是我的 php/smarty 函数:
$smarty->register_function("js_string_convert", "js_string_convert");
function js_string_convert($params,$smarty) {
if(!empty($params['string'])) {
$colArr = explode("_", $params['string']);
$smarty->assign('colArr',$colArr);
}
}
当我在 php 中转储数据 $params['string'] 时,它会输出:
string(12) "4_4_4"
所以我尝试爆炸字符串:
$colArr = explode("_", $params['string']);
当我转储 $colArr 时,它会输出:
array(1) {
[0] => string(12) "4_4_4"
}
这快把我逼疯了。它与从javascript接收字符串有关吗?
更新:
转储字符串的长度取决于我的 javascript 中变量的长度。 string(12) 是因为变量grid 太长了。当我将 grid 更改为 adasdasdasdasdasdasd 时,字符串为 string(33) 例如
【问题讨论】:
-
strpos($params['string'],"_")是否返回假? -
是的,它返回 false。
-
可能是编码问题?下划线不是下划线...
-
尝试对字符串中的每个字符进行
ord,并确保下划线与实际的ord("_")值匹配。 -
下划线来自html data-width="4_4_4"。在 jQuery 中,我通过 .attr('data-width') 获取此值,并使用此值附加一个 smarty 模板。
标签: javascript php smarty explode