如何在php中使用preg match从文件输出数据

如何在php中使用preg match从文件输出数据,php,get,Php,Get,我已使用此代码生成输出(file.php) 示例:127.0.0.1/file.php?username=4当我们转到该url时,它的编号为565 有没有一种方法可以通过PHP实现这一点?好吧,因为您希望坚持使用这种非XML数据,不向我们提供有关数据大小的更多信息,也不告诉我们如果搜索项旁边没有数字的回复方式,那么您可以从这样一个简单的正则表达式开始 正则表达式:Four[\s-]*(\d*) 在这里玩它: 您将在regex101.com上看到正则表达式的解释: 在PHP中,正则表达式必须由起

我已使用此代码生成输出(file.php)

示例:
127.0.0.1/file.php?username=4
当我们转到该url时,它的编号为
565


有没有一种方法可以通过PHP实现这一点?

好吧,因为您希望坚持使用这种非XML数据,不向我们提供有关数据大小的更多信息,也不告诉我们如果搜索项旁边没有数字的回复方式,那么您可以从这样一个简单的正则表达式开始

正则表达式:
Four[\s-]*(\d*)

在这里玩它:
您将在regex101.com上看到正则表达式的解释:

  • 在PHP中,正则表达式必须由起始字符和结束字符包围,然后可以在后面添加一些标志。我们通常使用
    /
    分隔符,就像JavaScript中的情况一样。但是有些人使用
    ~
    。例子:
    • /Teddy/i
      将查找单词Teddy,但不区分大小写
    • ~Teddy~i
      是完全相同的正则表达式,但使用另一个分隔符编写。这就是为什么
      preg_quote()
      有第二个参数,如果它不是常用的斜杠
      /
      ,则提供使用的分隔符
  • \s
    表示任何类型的空格字符
  • [\s-]
    表示任何类型的空格字符或
    -
    字符
  • [\s-]*
    表示可以是0或多次
  • \d
    表示任何数字字符
  • \d*
    表示任何数字字符0或多次
  • ()
    用于捕获,以便稍后在
    $matches
    数组中获取它
现在,如果
四个
是参数,那么您可以在PHP中执行此操作:


请解释这是为了什么。如果它仅仅是数据存储,那么为什么选择这种奇怪的自定义格式,而不使用JSON或XML呢?这些格式的解析器已经存在,因此您不必自己编写解析器。我个人会使用正则表达式,而不是循环中的一些PHP代码。这可能会更有效率。您正在搜索的XML数据有多大?如果它真的很大,是否可以解析它一次并将其转换为PHP数组或将其存储在数据库表中?请我想按照上面显示的方式执行此操作如果您有其他方法,请让我know@mebak:正如@CBroe所说,XML是被迫这样做的吗?如果是,如果
One
之类的条目旁边没有任何数字,我们该怎么办<代码>
不是XML!它应该类似于
Four-565
我们不使用itI我想通过get或POST请求获取用户信息在这种情况下只需打印结果!将
$username
替换为
$\u GET['username']
(或
$\u POST
),调用函数一次并打印结果。就这么简单;-)
<?php

function getContents($str, $startDelimiter, $endDelimiter) {
  $contents = array();
  $startDelimiterLength = strlen($startDelimiter);
  $endDelimiterLength = strlen($endDelimiter);
  $startFrom = $contentStart = $contentEnd = 0;
  while (false !== ($contentStart = strpos($str, $startDelimiter, $startFrom))) {
    $contentStart += $startDelimiterLength;
    $contentEnd = strpos($str, $endDelimiter, $contentStart);
    if (false === $contentEnd) {
      break;
    }
    $contents[] = substr($str, $contentStart, $contentEnd - $contentStart);
    $startFrom = $contentEnd + $endDelimiterLength;
  }

  return $contents;
}


$sample = '
<start>One<end>
<start>Two<end>
<start>Four - 565<end>
<start>Five - 556<end>
';
$v = getContents($sample, '<start>', '<end>');

$result = preg_filter('/[0-9]+/', '($0)', $v);

foreach ($result as $value => $name) {
    echo $name;
    echo "<br>";
}




?>
Four - (565)
Five - (556)
Result for 'One' is ''
Result for 'Two' is ''
Result for 'Four' is '565'
Result for 'Five' is '556'
Result for 'unknown user' is false