如何在第一个(变量)html-tag之间提取部分字符串?

时间:2012-04-27 06:55:38

标签: php regex

我有一些字符串:

$string1 = '<p><strong>Extract me</strong></p><p>Leave me</p>';
$string2 = '<strong>Extract me</strong>Leave me';
$string3 = '<span style="font-weight: bold">Extract me</span><br /><span>Leave me</span>';

让我们检查 $ string3

字符串的第一个标记是 <span> 因此,需要提取第一个<span>和第一个</span>之间的文字。

提取应表示:将其从 $ stringX 中删除并保存到 $ extractedX

我该怎么做?

4 个答案:

答案 0 :(得分:2)

[^>]*?(?=<\/.*>)

你应该做的是使用一个断言。 [^>]*?搜索任何不是>的字符。这应该没问题,因为如果您需要使用>作为文本,则需要将其转义为&gt;。然后它搜索<\/.*>表示的第一个结束标记。它周围的(?=)告诉正则表达式引擎不要在匹配中包含它。

http://regexr.com?30pkm

答案 1 :(得分:1)

您必须首先搜索,然后在此处发布您的问题。
这里的任何方式都是你的ans的相关问题 Click here to get the releted question

您可以使用preg replace

完成此操作

答案 2 :(得分:1)

您可以使用PHP的preg_match和正则表达式。

此在线编辑器对正则表达式非常有用:

http://regexr.com?30pkp

你需要这样的东西才能开始:

<strong>(.*)</strong>|<span.+font-weight:\ ?bold.+>(.*)</span>

如果您需要进行更高级的解析,可以查看在PHP中解析DOM,例如使用DOMDocument LoadHtml

答案 3 :(得分:0)

如果您只想要第一次出现,则可以strip_tags使用preg_match