【问题标题】:find in string specific information [closed]在字符串特定信息中查找[关闭]
【发布时间】:2015-07-10 12:26:45
【问题描述】:

我有一个字符串,想找点东西:

字符串示例:

INSERT INTO #__users VALUES("XXXX","First User","admin","69");

如何找到数字 ID? 其中 XXX - 是任意数字。

【问题讨论】:

  • 您要寻找的结果是什么?您想查找在数据库中创建的 XXXX 或 id 吗?
  • 你的意思是你插入的行的ID吗?你用什么插入它? PDO 有以下内容:php.net/manual/en/pdo.lastinsertid.php
  • 我们仍然不知道您真正想要找到什么。能给我们举个例子吗?

标签: php mysql regex


【解决方案1】:

您可以使用preg_match 函数通过此正则表达式获取值:

^INSERT\s+INTO\s+#\S+\s+VALUES\("([^"]+)

正则表达式

  • ^ - 字符串的开头(如果添加 m 标志,则可以是行首)
  • INSERT - 文字字符串 INSERT
  • \s+ - 1 个或多个空格符号
  • INTO - 文字 INTO
  • \s+ - 1 个或多个空格符号
  • #\S+- 文字 # 后跟 1 个或多个非空白符号
  • \s+ - 1 个或多个空格符号
  • VALUES\(" - 文字 VALUES("
  • ([^"]+) - 一个匹配 1 个或多个字符而不是 " 的捕获组(如果这里只有数字,则可以使用 \d+)。

demo。您需要的字符串位于捕获的组 1 中,因为 [^"]+ 将安全地匹配除双引号之外的所有内容。如果它只包含数字,请使用\d+^INSERT\s+INTO\s+#\S+\s+VALUES\("(\d+)。如果字符串没有出现在字符串/行的开头,请删除^

$re = '/^INSERT\s+INTO\s+#\S+\s+VALUES\("([^"]+)/'; 
$str = "INSERT\nINTO #__users\nVALUES(\"9999\",\"First User\",\"admin\",\"69\");"; 
preg_match($re, $str, $matches);
echo $matches[1];

IDEONE demo

【讨论】:

    猜你喜欢
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    相关资源
    最近更新 更多