如何在PHP中提取字符串的一部分
作者:互联网
我正在使用preg_replace()进行一些字符串替换.
$str = "<aa>Let's find the stuff qwe in between <id>12345</id> these two previous brackets</h>";
$do = preg_match("/qwe(.*)12345/", $str, $matches);
它工作正常,并给出以下结果
$match[0]=qwe in between 12345 $match[1]=in between
但我使用相同的逻辑从以下字符串中提取.
<text>
<src><![CDATA[<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Arial" SIZE="36" COLOR="#999999" LETTERSPACING="0" KERNING="0">r1 text 1 </FONT></P></TEXTFORMAT>]]></src>
<width>45%</width>
<height>12%</height>
<left>30.416666666666668%</left>
<top>3.0416666666666665%</top>
<begin>2s</begin>
<dur>10s</dur>
<transIn>fadeIn</transIn>
<transOut>fadeOut</transOut>
<id>E2159292994B083ACA7ABC7799BBEF3F7198FFA2</id>
</text>
我想从中提取字符串
r1text1
至
</id>
我目前拥有的正则表达式为:
preg_match('/r1text1(.*)</id\>/', $metadata], $matches);
其中$metadata是上述字符串.
$matches不返回任何内容.
由于某种原因…我该怎么做?
提前致谢
解决方法:
如果要提取文本,则可能要使用preg_match
.以下方法可能会起作用:
preg_match('#\<P[^\>]*\>\<FONT[^\>]*\>(.*\</id\>)#', $string, $matches)
括号中匹配的内容可以稍后在$matches数组中找到.在这种情况下,< P>标签,后跟< FONT>标签和< / id> ;,包括后者. 上面的正则表达式未经测试,但可能会让您大致了解如何执行此操作.如果您的需求有些不同,请适应:)
标签:text-extraction,php,regex 来源: https://codeday.me/bug/20191210/2103279.html