Windows 控制台中包含 SQLite 文本的换行符

问题描述 投票:0回答:1

使用 SQLite 数据库运行批处理文件驱动的 CGI 网站,存储新出现的换行符要求的文本。

我可以通过以下方式将带有换行符的文本存储到数据库中:

sqlite3.exe "\work\test.db" "INSERT INTO test (text) VALUES ('Hello' || char(10) || 'world')"

我可以通过以下方式成功地将此类文本插入网络表单中:

echo ^<form action="script.cmd" method="POST"^>
echo ^<textarea^>
sqlite3.exe "\work\test.db" "select text from test;" 2>NUL
echo ^</textarea^>
echo ^<input type="button" action="submit"^>
echo ^</form^>

我还可以通过以下方式从“script.cmd”中的 STDIN 读取和解码可能编辑的文本:

powershell.exe -noprofile "Add-Type -AssemblyName System.Web;[System.Web.HttpUtility]::UrlDecode($Input)"

但是我需要将换行符转换为:

|| char(10) ||

如本文第一个命令中所述。考虑在 HTTPDecoding powershell 前面加上类似的内容:

$decodedString -replace \"`r`n\", '|| char(10)'"

但问题是,如果两个换行符相继出现,则双管道的数量必须是奇数:

|| char(10) || char(10) ||

有人知道如何处理这个问题吗?我不想让它太复杂。

powershell sqlite cgi
1个回答
0
投票

我不想让它变得太复杂。

以下内容很复杂,但应该可以正常工作:

powershell.exe -noprofile "Add-Type -AssemblyName System.Web; [System.Web.HttpUtility]::UrlDecode([regex]::Replace(($Input -replace '''', '''''' -replace '^(?=.)|(?<=.)$', '''' -join [char] 10), '\n+', { ' || ' + 'char(10) || ' * $args[0].Value.Length }))"
© www.soinside.com 2019 - 2024. All rights reserved.