php正则匹配html

1.注意/一定要被转义成\/,否则会报错

preg_match_all() [function.preg-match-all]: Unknown modifier


2.正则表达式用单引号'和/作为开始和结束的标界,比如'/reg partten/',采用这样的写法,正则表达式里的双引号"不必转义

比如,

$partten='/<div class="goods_item"><a href="([^<>]+)" target="_blank"><img data-ks-lazyload="([^<>]+)" alt="([^<>]+)" width="" height=""\/>/';


3.需要先去除所有的换行符、制表符、回车等等,对于便于阅读的html源文件由于上述符号的存在会造成无法匹配。

$str=preg_replace("/[\t\n\r]+/","",$str);


4.我们感兴趣的匹配信息,通常是html元素中的属性的值,因此要去除<>,否则只会匹配最后一条之前的全部信息。

比如,对于$string="<div><a href=“1.jpg”></a></div><div><a href=“2.jpg”></a></div><div><a href=“3.jpg”></a></div>",

$partten='/<div><a href=“(.+)”/';的匹配结果是:1.jpg”></a></div><div><a href=“2.jpg”></a></div><div><a href=“3.jpg”></a></div>

这是因为,上述给出的正则表达式确实没有限定匹配的范围只是第一个超链接<a href=“1.jpg”></a>。

因此,要想匹配上述三个超链接的 href属性,需要将上述匹配限定在<a href=“1.jpg”>里面,方法也很简单,将(.+)换成([^<>]+),即可。也就是说,这个匹配不包含下一个出现& lt;>的地方,从而将匹配限定在同一个html标签内


做到以上几点,就可以完全无视html标签嵌套不嵌套的问题

转载于:https://www.cnblogs.com/coffiasd/p/4207681.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 PHP 的 preg_match 函数来匹配 HTML 中的背景图片。 首先,你需要编写一个则表达式来匹配背景图片的 URL。这可以通过在字符串中查找 "background" 关键字并在其后跟着 ": url(...)" 来实现。下面是一个示例则表达式: ``` /background\s*:\s*url\(([^\)]+)\)/i ``` 然后,你可以使用 preg_match 函数来执行匹配: ``` preg_match('/background\s*:\s*url\(([^\)]+)\)/i', $html, $matches); ``` 如果匹配成功,则 $matches 数组将包含一个元素,其中包含背景图片的 URL。你可以使用 $matches[1] 来访问 URL。 例如,如果你想要从下面的 HTML 代码中提取背景图片 URL: ``` <div style="background: url(/images/bg.jpg);">...</div> ``` 你可以使用以下代码: ``` $html = '<div style="background: url(/images/bg.jpg);">...</div>'; preg_match('/background\s*:\s*url\(([^\)]+)\)/i', $html, $matches); $url = $matches[1]; ``` 这将使 $url 变量包含 '/images/bg.jpg'。 ### 回答2: 在PHP中使用则表达式匹配HTML的背景图片,可以通过以下代码实现: ```php $html = '<div style="background-image: url("example.jpg");"></div>'; $pattern = '/background-image:\s?url\((["\']?)([^"\'\)]+)\1\)/'; preg_match($pattern, $html, $matches); if (isset($matches[2])) { $backgroundImageUrl = $matches[2]; echo "背景图片的URL为: " . $backgroundImageUrl; } else { echo "未找到背景图片"; } ``` 以上代码说明: - 首先,我们定义了一个包含背景图片的HTML代码片段(`$html`变量)。 - 然后,使用则表达式匹配`background-image`属性中的URL。则表达式中的`url\((["\']?)([^"\'\)]+)\1\)`部分用于匹配以`url(...)`格式包裹的URL值。 - `preg_match()`函数用于在HTML中执行则表达式的匹配。该函数会返回匹配的结果(保存在`$matches`数组中)。 - 最后,我们判断是否匹配成功。如果匹配成功,我们通过`$matches[2]`获取背景图片的URL并输出;如果没有匹配成功,则输出“未找到背景图片”。 需要注意的是,则表达式在处理HTML时可能会遇到一些特殊情况,例如换行符、空格等。如果需要更精准的匹配,可能需要对则表达式进行修改。此外,对于复杂的HTML结构,推荐使用专门的HTML解析库(如PHP内置的`DOMDocument`)来处理。 ### 回答3: 在PHP中,可以使用则表达式来匹配HTML背景图片。首先,我们需要了解HTML中背景图片的常见格式,一般是在CSS样式中的background属性中设置,例如: ```html <div style="background-image: url('image.jpg');"></div> ``` 我们可以使用preg_match函数来进行匹配。首先,我们需要定义一个则表达式模式,用于匹配background属性中的背景图片URL。模式可以使用以下则表达式: ```php $pattern = '/background-image:\s*url\(\'([^\']+)\'\)/'; ``` 然后,使用preg_match函数传入则表达式模式和需要匹配HTML代码来进行匹配。如果匹配成功,preg_match函数将返回1,否则返回0。我们还需要提供一个用于存储匹配结果的变量: ```php $html = '<div style="background-image: url(\'image.jpg\');"></div>'; $matches = array(); if (preg_match($pattern, $html, $matches)) { // 匹配成功 $backgroundImage = $matches[1]; // 提取匹配结果,即背景图片URL echo "背景图片URL:" . $backgroundImage; } else { // 匹配失败 echo "未找到背景图片"; } ``` 通过以上代码,我们可以成功获取背景图片的URL。请注意,则表达式模式中的括号用于捕获背景图片URL,而变量$matches[1]用于存储URL的值。 总结:使用PHP的preg_match函数配合则表达式可以有效匹配HTML代码中的背景图片。需要注意则表达式模式的编写,以及使用匹配结果的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值