TBS-将if语句中的分号字符串合并到列表中

时间:2018-09-11 15:26:28

标签: opentbs

当我运行以下TBS模板(.docx)时,单引号(')仍保留在最终docx输出中。

如果我删除了这些字符,那么分号(;)等特殊字符将破坏模板,并且不会显示所有列表元素。

如何继续使用特殊字符并避免单引号(')出现在文档中?

some text here

1.  [onshow;if [onload.missingFileEnabled;noerr] = ’1’; then ' Lorem ipsum 
dolor sit amet, consectetur adipiscing elit.

   •    [test.x;block=tbs:listitem]

Aliquam a commodo lacus. Proin elit sapien, ultrices vel odio ac, ultricies ipsum ';magnet=w:p] 

相关的php代码:

// Create list data
$contentValues = array("missingFileEnabled" => "1", "testListItem1" => "Test; 1", "testListItem2" => "test 2", "testListItem3" => "test 3");

// Since multiple lists has to be supported, the list is converted into a list of list data.
$listItems = array();
foreach ($contentValues as $key => $value) {
    if (strpos($key, 'ListItem') !== false && endsWith($key, 'Reservation') === false && endsWith($key, 'Description') === false) {
        //    echo "test<br>";
        $keyParts = explode("ListItem", $key);
        $listItems[$keyParts[0]][] = array("x" => str_replace("'", "’", $value));
    }
}

// Then for each list, we merge the data
foreach ((array)$listItems as $listName => $list) {
    $TBS->MergeBlock($listName, $list);
}

// Show the end file
$TBS->Show(OPENTBS_DOWNLOAD, $output_file_name);

1 个答案:

答案 0 :(得分:2)

代替使用条件字段(带有参数magnet),最好使用条件块(参数when)。

它更加严格且易于阅读。

这是您可以做的(参数block=3*tbs:p在3个段落中定义了一个块):

1.  [onshow;when [onload.missingFileEnabled;noerr] = ’1’; block=3*tbs:p] Lorem ipsum 
dolor sit amet, consectetur adipiscing elit.

   •    [test.x;block=tbs:listitem]

Aliquam a commodo lacus. Proin elit sapien, ultrices vel odio ac, ultricies ipsum