在Ruby中是否有相应的addslashes?

时间:2012-09-07 16:58:04

标签: ruby

使用Ruby,如何在写入输出文件的某些变量中自动转义单引号和双引号。来自PHP我正在寻找一个addlashes类型的函数,但在Ruby中它似乎不是一个简单的解决方案。

require "csv"

def generate_array( file )
    File.open("#{file}" + "_output.txt", 'w') do |output|
        CSV.foreach(file) do |img, _, part, focus, country, loc, lat, lon, desc, link|
            output.puts("[#{lat}, #{lon}, '#{img.downcase}', '#{part}', '#{loc}', '#{focus}', '#{country}', '#{desc}', '#{link}'],")
        end
    end
end

ARGV.each do |file|
    generate_array(file)
end

3 个答案:

答案 0 :(得分:5)

我想你可以使用这个Ruby构造模拟PHP addslashes功能:

.gsub(/['"\\\x0]/,'\\\\\0')

例如:

slashed_line = %q{Here's a heavily \s\l\a\s\h\e\d "string"}
puts slashed_line.gsub(/['"\\\x0]/,'\\\\\0')
# Here\'s a heavily \\s\\l\\a\\s\\h\\e\\d \"string\"

答案 1 :(得分:3)

还有String#dump

slashed_line = %q{Here's a heavily \s\l\a\s\h\e\d "string"}
puts slashed_line.dump
#=> "Here's a heavily \\s\\l\\a\\s\\h\\e\\d \"string\""

答案 2 :(得分:1)

我不认识Ruby,但我知道PHP addslashes已被弃用了。

每次需要转义数据时,都需要一个不同的转义例程。 HTML需要对数据库工作进行不同的编码和处理,每个数据库都有自己的特殊规则。

我假设您想要将内容输出到CSV文件。由于没有标准的CSV,这再次打开了一整条鱼。您需要对将要生成数据的内容(以及是否是严格的ASCII或Unicode或其他内容)进行一些研究,并且需要使用哪种格式的转义引号。大多数CSV消费者使用两个双引号来替换单个双引号。如果您的字符串中需要",请撰写""