【发布时间】:2012-06-02 11:56:15
【问题描述】:
Ruby 新手在这里。我正在尝试插入这个字符串“Lady Arabella's Scandalo...”我正在使用 ruby-pg 来执行此操作。但是,由于单引号,我遇到了错误,如何清理此字符串并删除所有 html 标签?有内置函数吗?
【问题讨论】:
标签: ruby postgresql pg
Ruby 新手在这里。我正在尝试插入这个字符串“Lady Arabella's Scandalo...”我正在使用 ruby-pg 来执行此操作。但是,由于单引号,我遇到了错误,如何清理此字符串并删除所有 html 标签?有内置函数吗?
【问题讨论】:
标签: ruby postgresql pg
您可以使用escape_string 正确转义单引号:
db = PG.connect(...)
db.exec("insert into t (...) values ('#{db.escape_string(str)}', ...)")
或使用 prepare 和 exec_prepared 来处理准备好的语句:
db.prepare('ins', 'insert into t (...) values ($1, ...)')
db.exec_prepared('ins', [str, ...])
【讨论】:
connection.escape_string。
connection.escape_string 不会在字段末尾转义反斜杠。
escape_string 只是从 PostgreSQL C 库中调用 PQescapeStringConn,所以如果它没有转义反斜杠,那么它就不需要。还是我错过了什么?
select 'test \'::tsvector; 或select E'test\'; 就会出现问题。试试看。
escape_string 不能正常工作的例子吗?为什么要尝试将 E 语法与非文字字符串一起使用?您唯一使用E'...' 的情况是您必须手动输入换行符等。