Php 为什么赢了';这不是正则表达式匹配吗?

Php 为什么赢了';这不是正则表达式匹配吗?,php,regex,Php,Regex,它应该匹配任何h1、h2或h3标记中的文本 preg_match("<[hH][1-3][^>]*>(.*?)<[hH][1-3]>", $text, $matches); echo $matches[0]; preg_match(“]*>(.*?”,$text,$matches); echo$匹配项[0]; 但它从来都抓不到 您缺少标记末尾和正则表达式周围的前斜杠。试试这个: preg_match("/<[hH][1-3][^>]*>(.*?

它应该匹配任何h1、h2或h3标记中的文本

preg_match("<[hH][1-3][^>]*>(.*?)<[hH][1-3]>", $text, $matches);
echo $matches[0];
preg_match(“]*>(.*?”,$text,$matches);
echo$匹配项[0];

但它从来都抓不到

您缺少标记末尾和正则表达式周围的前斜杠。试试这个:

preg_match("/<[hH][1-3][^>]*>(.*?)<\/[hH][1-3]>/", $text, $matches);
echo $matches[0];
preg_match(“/]*>(.*?/”,$text,$matches);
echo$匹配项[0];

您的正则表达式正在查找
文本
,而不是
文本
。添加斜杠将捕获实际的HTML。

您缺少标记末尾和正则表达式周围的正斜杠。试试这个:

preg_match("/<[hH][1-3][^>]*>(.*?)<\/[hH][1-3]>/", $text, $matches);
echo $matches[0];
preg_match(“/]*>(.*?/”,$text,$matches);
echo$匹配项[0];

您的正则表达式正在查找
文本
,而不是
文本
。添加斜杠将捕获实际的HTML。

至少,正则表达式中缺少分隔符:

preg_match("/<[hH][1-3][^>]*>(.*?)<[hH][1-3]>/", $text, $matches);
echo $matches[0];
preg_match(“/]*>(.*?/”,$text,$matches);
echo$匹配项[0];

至少在正则表达式中缺少分隔符:

preg_match("/<[hH][1-3][^>]*>(.*?)<[hH][1-3]>/", $text, $matches);
echo $matches[0];
preg_match(“/]*>(.*?/”,$text,$matches);
echo$匹配项[0];

您需要正则表达式分隔符,而不是您实际使用的分隔符(尖括号)。和结束标记上的斜线。我还将建议捕获开始标记并要求结束标记相同

preg_match('!<(h[1-3])[^>]*>(.*?)</\1>!i', $text, $matches);
echo $matches[1];
preg_match('!]*>(*?!i',$text,$matches);
echo$匹配[1];

您需要正则表达式分隔符,而不是您实际使用的分隔符(尖括号)。和结束标记上的斜线。我还将建议捕获开始标记并要求结束标记相同

preg_match('!<(h[1-3])[^>]*>(.*?)</\1>!i', $text, $matches);
echo $matches[1];
preg_match('!]*>(*?!i',$text,$matches);
echo$匹配[1];

我对Eric的代码做了一些改进。现在它匹配了

(这不应该发生)。仍然存在一些问题,例如,请尝试

preg_match(“/(.*?/”,$text,$matches);
echo$匹配项[0];//整个匹配字符串
echo$匹配项[2];//标签之间的内容

我对Eric的代码做了一些改进。现在它匹配了

(这不应该发生)。仍然存在一些问题,例如,请尝试

preg_match(“/(.*?/”,$text,$matches);
echo$匹配项[0];//整个匹配字符串
echo$匹配项[2];//标签之间的内容

Small nit:这是一个正斜杠注释,但是regexp将匹配blah@kibibu:谢谢,我总是把它们混在一起。很容易记住的是,如果斜杠是从左到右移动的,那么我想知道为什么斜线“下降”。我不知道为什么人们总是用中间的斜线来包装他们的正则表达式。我更喜欢倒勾。值得注意的是,用正则表达式解析HTML是个坏主意™.小nit:这是一个正斜杠注释,但是regexp将匹配blah@kibibu:谢谢,我总是把它们混在一起。很容易记住的是,如果斜杠是从左到右移动的,那么我想知道为什么斜线“下降”。我不知道为什么人们总是用中间的斜线来包装他们的正则表达式。我更喜欢倒勾。值得注意的是,用正则表达式解析HTML是个坏主意™.