0

我有一些字符串:

$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

4 回答 4

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

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

http://regexr.com?30pkm

于 2012-04-27T07:02:36.187 回答
1

您必须先进行搜索,然后在此处发布您的问题..
这里的任何方式都是您的 ans 相关问题 单击此处获取相关问题

你可以用preg replace

于 2012-04-27T07:00:59.010 回答
1

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

这个在线编辑器对正则表达式很有用:

http://regexr.com?30pkp

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

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

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

于 2012-04-27T07:07:14.627 回答
0

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

于 2012-04-27T07:02:27.290 回答