Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有php错误的正则表达式_Php_Regex_Preg Match - Fatal编程技术网

带有php错误的正则表达式

带有php错误的正则表达式,php,regex,preg-match,Php,Regex,Preg Match,我有以下html结构: <div data-provincia="mi" data-nazione="it" ecc... 我认为代码是正确的,但它与任何东西都不匹配。 我错在哪里? 谢谢。您可能需要使用括号中字符类旁边的量词+(1或更多),并删除第一个星号。还为您添加了一个子模式,以获得您想要的零件。试一试: $pattern = '/data-provincia="([a-zA-Z]+)"/'; preg_match($pattern,$element,$provincia); ec

我有以下html结构:

<div data-provincia="mi" data-nazione="it" ecc...
我认为代码是正确的,但它与任何东西都不匹配。 我错在哪里?
谢谢。

您可能需要使用括号中字符类旁边的量词+(1或更多),并删除第一个星号。还为您添加了一个子模式,以获得您想要的零件。试一试:

$pattern = '/data-provincia="([a-zA-Z]+)"/';
preg_match($pattern,$element,$provincia);
echo $provincia[1];
$element='';
$pattern='/]*数据省=\“([^\“]+)\“[^>]*>/”;
预匹配($pattern,$element,$provincia);
印刷品($provincia[1]);

除了我的注释之外,对于这个简单属性,您可以使用以下正则表达式:

$regex = '/data-provincia="([^"]*)/i';
preg_match($regex,$element,$matches);
echo $matches[1];

基本上是匹配的,除了一个双引号尽可能多(或者没有)。但是请至少考虑使用A来完成这个任务,正则表达式不是用来处理它的。

它的工作对我来说是不错的。

$element = '<div data-provincia="mi" data-nazione="it"></div>';
$pattern = '/data-provincia=*"[a-zA-Z]*"/';
$matches= array();
preg_match($pattern,$element, $matches);
if (!empty($matches)) {
    foreach ($matches as $eachOne) {
        //code to remove unwanted
        $text = trim(preg_replace('/^data-provincia\=/', '', $eachOne), '""');
        echo " $eachOne; $text";
    }

}
$element='';
$pattern='/data provincia=*“[a-zA-Z]*”/”;
$matches=array();
预匹配($pattern,$element,$matches);
如果(!空($matches)){
foreach($eachOne匹配){
//删除不需要的代码
$text=trim(preg_replace(“/^data provincia\=/”、“$eachOne”);
回显“$eachOne;$text”;
}
}

< /代码>对我来说很简单:不要尝试。它还返回一个空数组。我更新了我的答案(在子模式中移动+),请再试一次。仍然不工作。正则表达式是正确的(我的工作还不错),但它返回我和空数组。抱歉,它工作,谢谢。YW,请考虑接受答案。显示您的完整代码。
$regex = '/data-provincia="([^"]*)/i';
preg_match($regex,$element,$matches);
echo $matches[1];
$element = '<div data-provincia="mi" data-nazione="it"></div>';
$pattern = '/data-provincia=*"[a-zA-Z]*"/';
$matches= array();
preg_match($pattern,$element, $matches);
if (!empty($matches)) {
    foreach ($matches as $eachOne) {
        //code to remove unwanted
        $text = trim(preg_replace('/^data-provincia\=/', '', $eachOne), '""');
        echo " $eachOne; $text";
    }

}