使用 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.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 }))"