PHP:搜索id标记@.html文件

PHP:搜索id标记@.html文件,php,preg-match,file-get-contents,array-key,Php,Preg Match,File Get Contents,Array Key,我有一个简单的代码,我想搜索.html文件上的一些标记,但我遇到了一些错误,我刚刚接触php,遇到了'preg_match'命令 以下是我的简单代码: <?php $data['id="test"'] = 'A'; $html = file_get_contents('test.html'); if(preg_match(array_keys($data), $html)) { echo 'FOUND'; } else { echo 'NOT FOUND'; } ?&

我有一个简单的代码,我想搜索.html文件上的一些标记,但我遇到了一些错误,我刚刚接触php,遇到了'preg_match'命令

以下是我的简单代码:

<?php
$data['id="test"'] = 'A';

$html = file_get_contents('test.html');

if(preg_match(array_keys($data), $html)) 
{
    echo 'FOUND';
}
else
{
    echo 'NOT FOUND';
}
?>

它给了我一个错误警告:preg_match()期望参数1是字符串,数组在中给出


如果test.html文件中存在“id=test”
test,则上述代码将在test.html中搜索

您可以看到preg_匹配需要第一个参数是字符串

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
数组的返回值是“array”

所以您得到“preg_match()期望参数1是字符串,数组给定”

试试这个:

$data[] = 'id="test"';
$data[] = 'id="test2"';
$data[] = 'id="test3"';
$html = file_get_contents('test.html');
foreach ($data as $search){
 if (strpos($html , $search) !== FALSE)
    echo 'FOUND';
 else
    echo 'NOT FOUND';
}

至少,您需要这样做:

<?php
$data['id="test"'] = 'A';
$data=array_keys($data);
$data = preg_quote($data[0],"'");

$html = file_get_contents('test.html');

if(preg_match('~'.$data.'~', $html)) 
{
    echo 'FOUND';
}
else
{
    echo 'NOT FOUND';
}
?>

使用HTML解析器,比如
array\u keys($data)
返回一个包含1个元素的数组:
['id=“test”']
。。。这不是一个简单的错误,错误是不言而喻的。你试过调试吗?您至少应该尝试
var\u dump(array\u keys($data))
来测试您的假设;你会发现它确实返回了一个数组,而不是一个字符串;$data[0]是什么?
preg\u quote
将转义
$data
中作为
preg\u match
特殊符号的任何内容。关于
$data[0]
-如其他人所述,
array\u key
返回一个数组,但
preg\u match
需要一个字符串值
$data[0]
引用
$data
数组中的第一个元素,它是一个字符串值,包含您的值
id=“test”
$data[0]将只查找数组中的第一个元素,因此如果我在数组中添加更多元素,我将反复定义它们?好的,是的。就像我说的,至少你需要做我展示的,来修复你发布的代码。然后,我接着告诉您,有更好的方法来构建数据结构(例如DimaK建议的方法)@退一步,花一两个小时学习基本语法,会对您大有好处;)此外,有在线文档的功能等,他们使它超级容易找到一个条目。例如,您可以直接转到,它将带您进入
array_keys
条目,其中显示预期的语法、返回类型等。我喜欢您的想法,但我需要$data['id=test'],因此我可以使用array_键并在array_值上放置一些内容。然后它将如下所示:
$data['id=“test']='A';foreach($search=>$value)数据………
<?php
$data['id="test"'] = 'A';
$data=array_keys($data);
$data = preg_quote($data[0],"'");

$html = file_get_contents('test.html');

if(preg_match('~'.$data.'~', $html)) 
{
    echo 'FOUND';
}
else
{
    echo 'NOT FOUND';
}
?>