正则表达式获取XML标记之间的内容

时间:2013-05-29 13:31:12

标签: php regex

使用正则表达式,我想在内容字符串中返回<w:t ...></w:t>之间的所有内容

我使用的正则表达式如下:#(<w:t[^>]*>)([^<>]*)?</w:t>#

然而,有时会在开头剪切内容,因此内容可以从text</w:t>开始

我想要一个匹配的正则表达式:

  • $ 1:''
  • $ 2: '文本'

仍然继续匹配<w:t>

所包围的文字

我现在有两个正则表达式(另一个是#^()([^<]+)#),但我想把它们放在一个正则表达式中:

示例内容:

 {#fuites}</w:t></w:r><w:r w:rsidR="00E4576A"><w:rPr><w:bCs/></w:rPr><w:t>{</w:t></w:r><w:r w:rsidR="0066055D"><w:rPr><w:bCs/>
</w:rPr><w:t>type</w:t></w:r><w:r w:rsidR="00E4576A">
<w:rPr><w:bCs/></w:rPr><w:t>}</w:t></w:r>
<w:r w:rsidR="00900433"><w:rPr><w:bCs/>
</w:rPr><w:t xml:space="preserve">
</w:t></w:r><w:r w:rsidR="00900433">
<w:rPr><w:noProof/><w:lang w:eastAsia="fr-FR"/>
</w:rPr><w:drawing><wp:inline distT="0" distB="0" distL="0" distR="0" wp14:anchorId="1745F132" wp14:editId="7142C18F">
<wp:extent cx="225632" cy="179073"/><wp:effectExtent l="0" t="0" r="3175" b="0"/>
<wp:docPr id="7" name="Image 7"/><wp:cNvGraphicFramePr><a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" noChangeAspect="1"/></wp:cNvGraphicFramePr><a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:nvPicPr><pic:cNvPr id="0" name=""/><pic:cNvPicPr/></pic:nvPicPr><pic:blipFill><a:blip r:embed="rId11"/><a:stretch><a:fillRect/></a:stretch></pic:blipFill><pic:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="228029" cy="180975"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></pic:spPr></pic:pic></a:graphicData></a:graphic></wp:inline></w:drawing></w:r><w:r><w:rPr><w:b/><w:bCs/></w:rPr><w:t xml:space="preserve"> {Type}</w:t></w:r><w:r><w:rPr><w:b/><w:bCs/></w:rPr><w:tab/><w:t>{</w:t></w:r><w:r><w:rPr><w:bCs/></w:rPr><w:t>Description}</w:t></w:r></w:p><w:p w:rsidR="00FF7A5E" w:rsidRPr="00FF7A5E" w:rsidRDefault="00FF7A5E" w:rsidP="00CA7135"><w:pPr><w:rPr><w:bCs/></w:rPr></w:pPr><w:r><w:rPr><w:bCs/></w:rPr><w:t>{/fuites}

1 个答案:

答案 0 :(得分:2)

你需要第二个正则表达式(实际上你需要更多)因为正则表达式不是一个足够强大的解析XML / HTML的工具。无法构造一个或多个正则表达式,可以成功地执行您想要的操作。我建议使用PHP's XML Parser或其他一些XML感知库,而不是这样做。