【问题标题】:detect a quotation in a string检测字符串中的引号
【发布时间】:2010-12-07 20:34:22
【问题描述】:

我正在使用 php,我正在使用正则表达式来尝试检测引用。

我希望它仅在找到字符串中的引号时才找到匹配项

HELLO

应该找不到任何匹配项

"HELLO" 

应该找到匹配项

"HELLO

仍然应该找到匹配项

【问题讨论】:

  • 您是否要匹配包含引号的整个字符串?
  • 是否应该匹配两边的报价? HELLO" 应该匹配吗?
  • 如果你只是想找一个引号,strpos 会比使用正则表达式效率高得多。
  • 引号可以在字符串中的任何位置。它可以是 HE"LLO 。只需要找到它。我尝试了 Dan Grossman 所做的,但没有返回任何匹配项。
  • 代码是正确的,我在你所有的字符串上测试了它以确保。没有比匹配一个文字字符更简单的模式了。

标签: php regex apache preg-match


【解决方案1】:

正则表达式只是引号字符。

echo preg_match('/"/', $string);

HELLO 将返回 0,"HELLO" 将返回 1,"HELLO 将返回 1

【讨论】:

  • 错了。 HELLO 返回 0,"HELLO" 返回 1,"HELLO 返回 1
  • 您将preg_matchpreg_match_all 混淆了
  • 错了。你不知道我在想什么。
  • 这仍然是他的问题的正确答案,无论评论是否有小错误。 -1 表示答案没有用。停止拖钓。
  • 我只发现正确信息有用。 -1 不是世界末日。所以你犯了一个错误,每个人都会。然后你修好了!这对你来说很好。答案现在很有用。不要个人认为。
【解决方案2】:

您可以使用带有 preg_match 的正则表达式,它会检查 $thestring 中的任何双引号:

if(preg_match('"', $thestring)) { ... }

但使用strpos 函数可能会更快:

if(strpos($thestring, '"') !== false) { ... }

if 语句中的代码只有在找到双引号时才会执行。我的代码示例不会返回引用的文本,尽管您当然可以通过一些更改来做到这一点。

【讨论】:

  • 您需要修复if(strpos($thestring, '"'))。如果引号是第一个字符,strpos 将返回0。那行应该是if(strpos($thestring, '"') !== false)
  • 感谢您了解斯蒂芬,我已经相应地更新了我的示例。
  • +1 表示正确性。这也比正则表达式更容易阅读。
【解决方案3】:

使用"(.*?)(\n|\r|$|")

例子:

http://img221.imageshack.us/img221/2994/screenshot2z0.png

编辑:从你的 cmets 我了解到你不需要这个;您需要的是 Colin O'Dell 的回答(即 strpos 函数)。不过,我还是把它留在这里以防其他人需要它。

【讨论】:

  • @Colin O'Dell 我认为视觉示例(即 RegExr 屏幕截图)是找出正则表达式内容的最佳选择(例如 jsfiddle 用于 html/css/js 内容)
【解决方案4】:

没那么难,恕我直言:) 我猜您只是想确定给定字符串中是否有引号,对吗?那么它可以通过

preg_match('/"/',$string)

或更有效地

strpos($string,'"') || $string == '"'

【讨论】:

  • 正如 Stephen 在我的示例中所指出的,对于以双引号开头的字符串,strpos 将返回 0,如果没有 === 或 !== 运算符,则可以将其解释为布尔 false。
  • @Craige 尽管它可能会导致自 strpos('"', '"') === 0 以来的错误。
  • @PJK 最好使用strpos($string,'"') !== false
  • @Stephen - 是的,它可以,但这只是知道如何使用函数/语言的问题。
【解决方案5】:
["]*HELLO["]* 

将匹配 HELLO 两边有或没有引号。

或者你可以使用

"{0,1}HELLO"{0,1}

【讨论】:

  • 你和我看的问题一样吗?
【解决方案6】:

使用(trim($string, '"') !== $string)

(trim($string, '"\'') !== $string) 引用或单引号

【讨论】:

    猜你喜欢
    • 2015-10-25
    • 2012-09-27
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    相关资源
    最近更新 更多