【问题标题】:Need proper delimiter of this string需要此字符串的正确分隔符
【发布时间】:2016-08-27 15:59:16
【问题描述】:

谁能告诉我如何在这个字符串中正确添加分隔符:

  if (!preg_match ('' . '\\/\\/' . $host, $referer))

非常感谢,我已经尝试了所有方法(/ 和 @ ),但它对我不起作用! :(

【问题讨论】:

  • 你能详细说明你想要达到的目标吗?
  • @BVengerov 我收到 PHP 警告错误“分隔符不能是字母数字或反斜杠” - 我尝试添加的任何内容,例如 / 或 @ 作为分隔符,它仍然对我不起作用。
  • 为什么需要使用preg_match? $host 可能不是正则表达式,所以只需使用 strstr() 进行普通字符串搜索。
  • @Barmar 基本上我现在已将其从 ereg() 更改为 preg_match(),因为 ereg() 在 PHP 5.3.0 中已弃用,所以我现在再次将其从 preg_match() 更改为 strstr( ) 你确定它会起作用吗?需要更多答案......所以,这个字符串不能用 / 或 @ 等适当分隔......?

标签: php preg-match delimiter modifier


【解决方案1】:

除非$host 包含正则表达式模式字符,否则您应该可以将其更改为:

if(!strstr($referer, '//' . $host))

但如果它实际上是一个正则表达式,你可以使用任何你不希望出现在$host 中的字符作为分隔符,例如# 是一个不太可能出现的宿主字符。

if (!preg_match("#//$host#", $referer));

由于您没有使用/ 作为分隔符,因此您不需要转义这些字符。

【讨论】:

  • 我使用第二个密码,为了更安全,再次感谢 Barmar!
【解决方案2】:

您的正则表达式中的最后一个符号是$host 值的最后一个符号,所以基本上它只是无效的正则表达式。

这应该可以:preg_match ("#//$host#", $referer);,但您可能可以使用简单的字符串搜索,如 cmets 中所述。

编辑:

strstr 的示例:

if(strstr($referer, $host) === false)

【讨论】:

  • 你能否给我一个简单字符串的代码,对不起,我不知道如何处理简单的字符串搜索,如 cmets 中所述?非常感谢,我也会测试这段代码!
  • 我使用 if (!preg_match("#//$host#", $referer));并且 PHP 错误消失了,我认为那会很好。无论如何,非常感谢 BVengerov。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多