有 php 错误的正则表达式
Regular Expression with php Error
我有以下 html 结构:
<div data-provincia="mi" data-nazione="it" ecc...
我正在尝试使用 "mi" 和 preg_match 函数。
这是我的代码:
$pattern = '/data-provincia=*"[a-zA-Z]*"/';
preg_match($pattern,$element,$provincia);
我认为代码是正确的,但与任何内容都不匹配。
我哪里错了?
谢谢
您可能希望在括号之间的字符 class 旁边使用量词 +(1 或更多),并删除第一个星号。还为您添加了一个子模式,以准确获得您想要的部分。试一试:
$pattern = '/data-provincia="([a-zA-Z]+)"/';
preg_match($pattern,$element,$provincia);
echo $provincia[1];
$element = '<div data-provincia="mi" data-nazione="it" ecc...>';
$pattern = '/<div[^>]*data-provincia=\"([^\"]+)\"[^>]*>/';
preg_match($pattern,$element,$provincia);
print_r($provincia[1]);
除了我的评论之外,对于这个简单的属性,您可以使用以下正则表达式:
$regex = '/data-provincia="([^"]*)/i';
preg_match($regex,$element,$matches);
echo $matches[1];
基本上匹配除双引号以外的所有内容(或none)。但是请至少考虑使用 Parser 来完成这项任务,正则表达式并不是用来处理它的。
它对我来说很好
$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";
}
}
我有以下 html 结构:
<div data-provincia="mi" data-nazione="it" ecc...
我正在尝试使用 "mi" 和 preg_match 函数。 这是我的代码:
$pattern = '/data-provincia=*"[a-zA-Z]*"/';
preg_match($pattern,$element,$provincia);
我认为代码是正确的,但与任何内容都不匹配。 我哪里错了? 谢谢
您可能希望在括号之间的字符 class 旁边使用量词 +(1 或更多),并删除第一个星号。还为您添加了一个子模式,以准确获得您想要的部分。试一试:
$pattern = '/data-provincia="([a-zA-Z]+)"/';
preg_match($pattern,$element,$provincia);
echo $provincia[1];
$element = '<div data-provincia="mi" data-nazione="it" ecc...>';
$pattern = '/<div[^>]*data-provincia=\"([^\"]+)\"[^>]*>/';
preg_match($pattern,$element,$provincia);
print_r($provincia[1]);
除了我的评论之外,对于这个简单的属性,您可以使用以下正则表达式:
$regex = '/data-provincia="([^"]*)/i';
preg_match($regex,$element,$matches);
echo $matches[1];
基本上匹配除双引号以外的所有内容(或none)。但是请至少考虑使用 Parser 来完成这项任务,正则表达式并不是用来处理它的。
它对我来说很好
$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";
}
}