需要php函数从字符串中提取值

时间:2011-04-09 09:25:33

标签: preg-match php

字符串

<div id="main">
   content (is INT)
   <div>some more content (is not INT) other content (also INT)</div>
</div>

我需要获得content这是一个INT。一个简单的条带所有非INT函数将不起作用,因为other content有时也是一个INT。我不能使用select子解决方案,因为它总是在div之外,选择<div id="main">的内容也会选择另一个div。

因此,有一个解决方案可以从第一个<开始搜索字符串,并在找到时删除其余的字符串。

(结构不能改变)

1 个答案:

答案 0 :(得分:1)

如果这是确切的格式,您可以使用substrstrpos

之类的东西
$html = '<div id="main">
   12345
   <div>foobar6789</div>
</div>
';

$content_1 = substr($html,15,strpos($html,'<div>')-15); //the first INT content
$subdiv = str_replace("</div>","",substr($html,strpos($html,'<div>')+5));

preg_match('/(?P<noint>[^0-9]+)(?P<digit>\d+)/', $subdiv, $matches);
echo $matches['noint'];//the NO INT content
echo $matches['digit'];//the second INT

使用regexp解析html不是一个好主意......但也许你只能使用preg_match ...

祝你好运!