0

我有这个简单的代码,我想在 .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.html中搜索。

4

2 回答 2

1

you can see that the preg_match needs the first parameter to be a string

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

and that array_keys return value is "array"

array array_keys ( array $array [, mixed $search_value = NULL [, bool $strict = false ]] )

so you get "preg_match() expects parameter 1 to be string, array given"

try this :

$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';
}
于 2013-11-06T23:24:16.040 回答
1

至少,您需要这样做:

<?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';
}
?>

但是.. 如果您愿意/能够重构$data

另请注意,这只会寻找完全匹配。"test"如果用单引号括起来,或者 and 之间有空格id等,它将不匹配"test"

简而言之,您现在拥有的方式,您不妨使用strpos

于 2013-11-06T23:27:28.173 回答