包含括号的PHP preg_replace值

时间:2015-11-22 23:25:02

标签: php preg-replace

在我的PHP脚本中,我想使用preg_replace替换值,跳过HTML标记<a></a>中的任何值。这些值包含在数组中,因此以下是在循环中运行的当前代码的片段:

$Used[$i] = preg_replace("~<a[^>]*>.*?</a\s*>(*SKIP)(*FAIL)|{$MatchFinal[$i]}~","{$MatchLinkFinal[$i]}", $value);

代码有效,但包含括号()的值除外。

例如,如果$MatchFinal[$i]包含值Fatigue,则会将其替换为包含链接的值$MatchLinkFinal[$i]<a> ... {{1} } ... Fatigue。但是,如果<a>包含值$MatchFinal[$i],则它不会替换它。

为什么包含括号的值未被替换?

注意:正在替换包含空格和/或撇号的值。

我试图逃避括号......

Hair (Dry)

$MatchFinal[$i] = str_replace("(", "\(", $MatchFinal[$i]);

...但我收到了一条错误消息:

$MatchFinal[$i] = str_replace(")", "\)", $MatchFinal[$i]);

1 个答案:

答案 0 :(得分:3)

您需要preg_quote()

def determine_current_hour
   current_time = Time.new
   current_hour = current_time.hour
end

def greeting(name)
  current_hour = determine_current_hour
  if(current_hour > 3 && current_hour < 12)
     time = "morning"
  elsif(current_hour > 12 && current_hour < 18)
     time = "afternoon"
  elsif(current_hour > 18 || current_hour < 2)
     time = "evening"
  end
  puts "Good #{time}, #{name.capitalize}!"
end



puts "What is your name?"
name = gets

greeting(name)