PHP正则表达式帮助

时间:2011-07-15 13:58:25

标签: php

我将在一个新项目中使用正则表达式, 我对它们没有多少经验,并且想知道将HTML转换为正则表达式的好方法。

有人知道任何好的教程,或者可能是发电机吗?

目前我需要转换它:

<span class="code" id="code" title="DOESNT MATTER">IMPORTANT<img class="scissors" src="DOESNT MATTER" alt="DOESNT MATTER" /></span>

谢谢!

3 个答案:

答案 0 :(得分:1)

$text = '<span class="code" id="code" title="DOESNT MATTER">IMPORTANT<img class="scissors" src="DOESNT MATTER" alt="DOESNT MATTER" /></span>';
preg_match('|<span class="code" id="code" title="DOESNT MATTER">IMPORTANT<img class="scissors" src="DOESNT MATTER" alt="DOESNT MATTER" /></span>|', $text, $match);

如果您没有寻找指定的标题,那么就没有“转换”了

选择那个重要的你会用

$text = '<span class="code" id="code" title="DOESNT MATTER">IMPORTANT<img class="scissors" src="DOESNT MATTER" alt="DOESNT MATTER" /></span>';
preg_match('|<span class="code" id="code" title="DOESNT MATTER">(.*?)<img class="scissors" src="DOESNT MATTER" alt="DOESNT MATTER" /></span>|', $text, $match);
echo $match[1]; //IMPORTANT

答案 1 :(得分:0)

如果您想摆脱某些值周围的所有html,可以使用strip_tags()

编辑:将评论移到答案中,因为它复制/粘贴不好。

<?php
$html = '<span class="code" id="code" title="DOESNT MATTER">IMPORTANT<img class="scissors" src="DOESNT MATTER" alt="DOESNT MATTER" /></span>';
preg_match_all("/<span\s.*?class=\"code\"[^>]+>(.*?)<img\s.*?class=\"scissors\"[^>]+>/i", $html, $matches);
var_dump($matches);
?>

另外,请注意,就像上面的评论中所说的那样,使用正则表达式来解析html被认为是不好的做法。您应该能够将html加载到DOMDocument的实例中,并使用getElementsByTagName方法来获取所有跨度。然后你可以遍历这些并验证里面的属性/文本。

答案 2 :(得分:0)

值得注意的是,正则表达式不是解析HTML的绝佳解决方案。我认为如果你有一小部分具有保证格式的HTML,它们就没问题了。

请参阅以下精彩的StackOverflow主题:

RegEx match open tags except XHTML self-contained tags