如何在TYPO3中嵌套SplitProcessor实现字符串二次分割?
TYPO3中嵌套SplitProcessor实现两次字符串分割的方法
我需要先按行分割字符串,再按|进行分割。最初使用fieldDelimiter设为|的CommaSeparatedValueProcessor处理简单字符串有效,但当前字符串包含用于度量值的双引号和单引号,导致该处理器失效。尝试将fieldEnclosure设置为非双引号字符也无济于事,因此想改用SplitProcessor,询问是否可通过嵌套它实现两次分割。
初始配置代码如下:
dataProcessing { 10 = TYPO3\CMS\Frontend\DataProcessing\SplitProcessor 10 { fieldName = data delimiter.char = 10 as = myarray } }
解决方案:嵌套SplitProcessor实现二次分割
完全可以通过嵌套SplitProcessor实现两次分割,只需按顺序配置两次分割逻辑即可,示例配置如下:
dataProcessing { # 1. 按换行符分割原始字符串为行数组 10 = TYPO3\CMS\Frontend\DataProcessing\SplitProcessor 10 { fieldName = data delimiter.char = 10 as = rowArray } # 2. 对每行数据按|分割为子数组 20 = TYPO3\CMS\Frontend\DataProcessing\SplitProcessor 20 { fieldName = rowArray delimiter = | as = finalArray # 可选:过滤分割后的空元素 # removeEmptyValues = 1 } }
配置说明
- 第一步处理器(排序10):使用换行符(
delimiter.char = 10)将原始字符串分割为单行元素组成的数组,存储为rowArray - 第二步处理器(排序20):针对
rowArray中的每个元素,以|为分隔符进行二次分割,最终生成二维数组finalArray - 如果分割后存在无效空元素,可启用
removeEmptyValues = 1参数过滤
额外优化建议
如果原始字符串中|前后存在多余空格,可在二次分割前添加TrimProcessor清理每行数据:
dataProcessing { 10 = TYPO3\CMS\Frontend\DataProcessing\SplitProcessor 10 { fieldName = data delimiter.char = 10 as = rowArray } # 清理每行的首尾空格 15 = TYPO3\CMS\Frontend\DataProcessing\TrimProcessor 15 { fieldName = rowArray as = trimmedRowArray } 20 = TYPO3\CMS\Frontend\DataProcessing\SplitProcessor 20 { fieldName = trimmedRowArray delimiter = | as = finalArray } }
内容的提问来源于stack exchange,提问作者user500665
相关产品推荐
相关产品推荐

