编程语言
首页 > 编程语言> > 如何在PHP中提取字符串的一部分

如何在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&gt ;,包括后者. 上面的正则表达式未经测试,但可能会让您大致了解如何执行此操作.如果您的需求有些不同,请适应:)

标签:text-extraction,php,regex
来源: https://codeday.me/bug/20191210/2103279.html