【问题标题】:Regex not displaying well whe using PHP preg_quote使用 PHP preg_quote 时正则表达式显示不佳
【发布时间】:2015-06-08 02:38:14
【问题描述】:

嗨,我试图在将字符串转换为 PHP 中的正则表达式之前连接一个字符串,但问题是它没有按预期显示。我一直在用谷歌搜索,发现了preg_quote,问题是它运行得不好。

这是我的例子:

$mystring = "banana"; // put this to a variable assume this value is dynamic
$regex_str = "/^"$mystring"\-[a-z0-9]\-[a-z0-9]$/"; 
//Im expecting expecting /^banana\-[a-z0-9]\-[a-z0-9]$/
$regex = preg_quote($regex_str);

但我得到的是:

/\^banana\\\-\[a\-z0\-9\]\\\-\[a\-z0\-9\]\$/

并且总是返回错误的值。

【问题讨论】:

  • preg_quote() 旨在在您添加到正则表达式的字符串上调用,而不是在添加后的整个正则表达式上调用。
  • 您引用 $mystring 并将其与正则表达式的其余部分连接起来。引用整个正则表达式没有任何意义。
  • 那是你的实际代码吗?你应该得到一个错误。
  • @Anonymous 是的,我知道吗?这就是为什么我要问如何解决这个问题。谢谢
  • @lok​​i9 不,我的意思是您显示的代码除了语法错误之外甚至不会产生输出。您实际使用的代码可能不同。

标签: php regex preg-quote


【解决方案1】:

在将要添加的字符串添加到正则表达式之前,调用 preg_quote()

$mystring = "banana";
$regex_str = "/^" . preg_quote($mystring, "/") . "\-[a-z0-9]\-[a-z0-9]$/"; 

【讨论】:

  • @Jonny5 是的,我也刚刚发现。它对我有用,我将编辑我的问题
猜你喜欢
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
  • 1970-01-01
相关资源
最近更新 更多