小编Tal*_*sin的帖子

concat,引号和撇号组合问题

我尝试了不同的方式,也环顾四周,但无法运行.我需要连接以下内容:

"concat( 
    'this is; \"a sample',
    //XML_NODE,
    '\"; \"using an apostrophe',
    ''',
    'in text\"'
)"
Run Code Online (Sandbox Code Playgroud)

一行版本:

"concat( 'this is; \"a sample', //XML_NODE, '\"; \"using an apostrophe', ''', 'in text\"' )"
Run Code Online (Sandbox Code Playgroud)

输出应该是:

this is "a sample XML_NODE_VALUE"; "using an apostrophe ' in text"
Run Code Online (Sandbox Code Playgroud)

问题是'在文中.concat使用它来结束字符串并期望跟随; 或者结束.转义或HTML实体似乎都无法正常工作.

任何帮助都非常感谢.

谢谢!

xslt concat

4
推荐指数
2
解决办法
2万
查看次数

将多个非常大的 csv 文件相互比较

我有 n 个 csv 文件,我需要相互比较并在之后修改它们。问题是每个 csv 文件大约有 800.000 行。

要读取 csv 文件,我使用fgetcsv并且效果很好。获得一些内存矛,但最终它足够快。但是,如果我尝试将数组相互比较,则需要很长时间。

另一个问题是我必须使用 foreach 来通过 fgetcsv 获取 csv 数据,因为有 n 个文件。我最终得到了一个超大数组,无法与 array_diff 进行比较。所以我需要将它与嵌套的 foreach 循环进行比较,这需要很长时间。

一个代码片段,以便更好地理解:

foreach( $files as $value ) {
    $data[] = $csv->read( $value['path'] );
}
Run Code Online (Sandbox Code Playgroud)

我的 csv 类使用 fgetcsv 将输出添加到数组中:

fgetcsv( $this->_fh, $this->_lengthToRead, $this->_delimiter, $this->_enclosure )
Run Code Online (Sandbox Code Playgroud)

所有 csv 文件的每个数据都存储在 $data 数组中。这可能是只使用一个数组的第一个大错误,但我不知道如何在不使用 foreach 的情况下保持文件的灵活性。我尝试使用灵活的变量名,但我也坚持使用:)

现在我有这个大数组。通常,如果我尝试将这些值相互比较并找出文件 1 中的数据是否存在于文件 2 中等等,我会使用 array_diff 或 array_intersect。但在这种情况下,我只有这个大数组。正如我所说,运行 foreach 需要很长时间。

同样在只有 3 个文件之后,我有一个包含 3 * 800.000 个条目的数组。我猜最近 10 个文件后我的记忆会爆炸。

那么有没有更好的方法来使用 PHP 来比较 …

php csv fgetcsv

1
推荐指数
1
解决办法
1656
查看次数

标签 统计

concat ×1

csv ×1

fgetcsv ×1

php ×1

xslt ×1