php 根据class 正则匹配DIV
时间: 2023-09-12 16:13:23 浏览: 77
以下是一个例子,可以匹配HTML中所有class为"my-class"的div标签:
```php
$html = '<div class="my-class">This is a div with class "my-class".</div><div class="other-class">This is a div with class "other-class".</div>';
preg_match_all('/<div class="my-class".*?>.*?<\/div>/s', $html, $matches);
print_r($matches);
```
输出结果为:
```
Array
(
[0] => Array
(
[0] => <div class="my-class">This is a div with class "my-class".</div>
)
)
```
解释一下正则表达式:
`/<div class="my-class".*?>.*?<\/div>/s`
- `<div class="my-class"`:匹配div标签的开头,且class属性为"my-class"
- `.*?`:匹配任意字符,且尽可能少
- `<\/div>`:匹配div标签的结尾
最后的`s`修饰符表示"."也可以匹配换行符。
相关问题
php 正则匹配DIV
以下是匹配DIV的 PHP 正则表达式:
```
/<div\b[^>]*>(.*?)<\/div>/si
```
解释:
- `<div`:匹配 DIV 标签的开头;
- `\b`:单词边界,确保不会匹配到 DIV 的子串;
- `[^>]*`:匹配除了 ">" 以外的任意字符,确保 DIV 标签内的属性和值不会影响匹配结果;
- `(.*?)`:懒惰匹配,匹配 DIV 内的任意内容;
- `<\/div>`:匹配 DIV 标签的结尾;
- `/si`:正则表达式修饰符,使正则表达式忽略大小写(i)并且 "." 能够匹配换行符(s)。
使用示例:
```php
$pattern = '/<div\b[^>]*>(.*?)<\/div>/si';
$string = '<div class="content"><p>This is a DIV.</p></div>';
preg_match($pattern, $string, $matches);
print_r($matches);
```
输出结果:
```
Array
(
[0] => <div class="content"><p>This is a DIV.</p></div>
[1] => <p>This is a DIV.</p>
)
```
其中,$matches[0] 表示匹配到的整个 DIV 标签,$matches[1] 表示 DIV 内的内容。
php 正则匹配div内容,结果不含div标签
在 PHP 中,您可以使用 `preg_match` 函数来匹配正则表达式。以下是一个示例代码,可以匹配一个 div 元素中的内容并去掉 div 标签:
```php
$html = '<div class="my-div">Hello, world!</div>';
$pattern = '/<div\b[^>]*>(.*?)<\/div>/s';
preg_match($pattern, $html, $matches);
if ($matches) {
$content = $matches[1];
$content = strip_tags($content); //去掉 HTML 标签
echo $content;
}
```
解释:
- `/<div\b[^>]*>(.*?)<\/div>/s` 是一个正则表达式,可以匹配 div 元素的内容。`/s` 标记表示让 `.` 匹配任何字符,包括换行符。
- `preg_match($pattern, $html, $matches)` 函数执行正则表达式匹配,将匹配结果存储在 `$matches` 数组中。
- `$matches[1]` 是匹配结果中第一个括号内的内容,即 div 元素中的内容。
- `strip_tags` 函数可以去掉字符串中的 HTML 标签,从而得到纯文本内容。
在实际使用中,您可能需要根据具体的需求来修改正则表达式和处理结果的方式。
阅读全文