-2

我是 php 开发人员,将 ruby​​ 脚本转换为 PHP,我在任何地方都找不到这种语法。请帮助我理解它的含义。

var1 = "" if self.title.match(/(#{var1})/i)
4

2 回答 2

1

首先,

greeting = "Hello"
puts "#{greeting} world"

--output:--
Hello world

因此,#{..} 构造允许您将变量内插到字符串中——它比 php 的 $variable 内插到字符串中更冗长,但这就是它的方式。在 ruby​​ 中,您还可以将任意表达式插入到字符串中:

puts "1 + 2 = #{1+2}"

--output:--
1 + 2 = 3


def get_greeting
  "Goodbye"
end

puts "#{get_greeting} world"

--output:--
Goodbye world

这是您的示例:

title = "HELLO"
var1 = "hello"

var1 = "" if title.match(/(#{var1})/i)
puts "--->#{var1}<--"

--output:--
---><--

...相当于:

title = "HELLO"
var1 = "hello"

if title.match(/(#{var1})/i)
  var1 = ""
end

puts "--->#{var1}<--"

--output:--
---><--

...相当于:

title = "HELLO"
var1 = "hello"

if title.match(/(hello)/i)
  var1 = ""
end

puts "--->#{var1}<--"

--output:--
---><--

请注意,您可以使用 #{...} 构造将变量插入到正则表达式中。

于 2013-06-27T08:47:57.170 回答
1

这意味着""如果self.title匹配由 插值的正则表达式,它应该返回一个空字符串#{var1},这/i意味着它不区分大小写。

于 2013-06-27T08:19:02.453 回答