目前我有这段代码:
<?php
if (isset($_GET['id'])) {
$itemid = $_GET['id'];
$search = "$itemid";
$query = ucwords($search);
$string = file_get_contents('http://clubpenguincheatsnow.com/tools/newitemdatabase/items.php');
if($itemid=="")
{
echo "Please fill out the form.";
}
else
{
$string = explode('<br>',$string);
foreach($string as $row)
{
preg_match('/^(\D+)\s=\s(\d+)\s=\s(\D+)\s=\s(\d+)/', trim($row), $matches);
if(strstr($matches[1], $query))
{
echo "<a href='http://clubpenguincheatsnow.com/tools/newitemdatabase/info.php?id=$matches[2]'>";
echo $matches[1];
echo "</a><br>";
}
}
if($matches[1]=="")
{
echo "Item does not exist!";
}
}
}
else {
echo "Item does not exist!";
}
?>
我想知道的是这部分是什么意思? preg_match('/^(\D+)\s=\s(\d+)\s=\s(\D+)\s=\s(\d+)/', trim($row), $matches);
主要是/^(\D+)\s=\s(\d+)\s=\s(\D+)\s=\s(\d+)/
部分是我想知道的。
另外,我遇到的一个问题是如何允许它也使用数字?因为我有另一个包含数据的文件(http://clubpenguincheatsnow.com/tools/newitemdatabase/items.php),它希望它能抓住所有内容,甚至是带有数字的名字。
虽然如何做到这一点?请帮我!任何帮助都会非常感激!
答案 0 :(得分:1)
代码是正则表达式:
/^(\D+)\s=\s(\d+)\s=\s(\D+)\s=\s(\d+)/
代码将使用正则表达式剪切字符串um片段并放入数组($ matches)
preg_match('/^(\D+)\s=\s(\d+)\s=\s(\D+)\s=\s(\d+)/', trim($row), $matches);
您应该使用代码来查看更好的
print_r($matches)
要按名称或项目编号查找,请更改代码
if(strstr($matches[1], $query))
到
if(isset($matches[1]) && (strstr($matches[1], $query) || $matches[2] == $query) )
您的代码应如下所示......
if (isset($_GET['id'])) {
$itemid = $_GET['id'];
$search = "$itemid";
$query = ucwords($search);
$string = file_get_contents('http://clubpenguincheatsnow.com/tools/newitemdatabase/items.php');
if($itemid=="")
{
echo "Please fill out the form.";
}
else
{
$string = explode('<br>',$string);
foreach($string as $row)
{
preg_match('/^(\D+)\s=\s(\d+)\s=\s(\D+)\s=\s(\d+)/', trim($row), $matches);
if(isset($matches[1]) && (strstr($matches[1], $query) || $matches[2] == $query) )
{
echo "<a href='http://clubpenguincheatsnow.com/tools/newitemdatabase/info.php?id=$matches[2]'>";
echo $matches[1];
echo "</a><br>";
}
}
}
}
else {
echo "Item does not exist!";
}
答案 1 :(得分:1)
/^(\D+)\s=\s(\d+)\s=\s(\D+)\s=\s(\d+)/
此正则表达式将匹配任意数量的非数字字符,后跟空格字符,后跟等号,依此类推。例如,这个
asd = 1 = yh = 23
允许姓名中的数字:
/^(\w+)\s=\s(\d+)\s=\s(\w+)\s=\s(\d+)/
允许所有内容中的数字和字母数字字符:
/^(\w+)\s=\s(\w+)\s=\s(\w+)\s=\s(\w+)/
要包含空格和'
:
/^([\w\s']+)\s=\s([\w\s']+)\s=\s([\w\s']+)\s=\s([\w\s']+)/
答案 2 :(得分:1)
这是一个正则表达式。
'^'匹配字符串的开头。
'\ D'匹配任何不是数字的字符。
'\ d'匹配任何数字。
'\ s'匹配任何空格。
加号表示前一个字符可以多次出现。
所以基本上它会匹配你文件中的所有行,除了最后一个逗号。
Blue = 1 = No = 20
该行与正则表达式匹配。
关于您允许号码的最后一个问题,请使用:
/^(.+)\s=\s(\d+)\s=\s(\D+)\s=\s(\d+)/
答案 3 :(得分:0)
Sena所说的代码是一个正则表达式。它正在捕获四组,其中包含“=”。
所以,它会匹配如下:a = 1 = bc = 2
所以,它匹配数字,你想要它做什么?按照上面的建议尝试print_r($ matches)。