如何在php中使用preg match从文件输出数据
我已使用此代码生成输出(file.php) 示例:如何在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中,正则表达式必须由起
127.0.0.1/file.php?username=4
当我们转到该url时,它的编号为565
有没有一种方法可以通过PHP实现这一点?好吧,因为您希望坚持使用这种非XML数据,不向我们提供有关数据大小的更多信息,也不告诉我们如果搜索项旁边没有数字的回复方式,那么您可以从这样一个简单的正则表达式开始 正则表达式:
Four[\s-]*(\d*)
在这里玩它:您将在regex101.com上看到正则表达式的解释:
- 在PHP中,正则表达式必须由起始字符和结束字符包围,然后可以在后面添加一些标志。我们通常使用
分隔符,就像JavaScript中的情况一样。但是有些人使用/
或
。例子:~
将查找单词Teddy,但不区分大小写/Teddy/i
是完全相同的正则表达式,但使用另一个分隔符编写。这就是为什么~Teddy~i
有第二个参数,如果它不是常用的斜杠preg_quote()
,则提供使用的分隔符/
表示任何类型的空格字符\s
表示任何类型的空格字符或[\s-]
字符-
表示可以是0或多次[\s-]*
表示任何数字字符\d
表示任何数字字符0或多次\d*
用于捕获,以便稍后在()
数组中获取它$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