抓住中间的文本到变量

时间:2013-01-26 13:05:23

标签: php

  

可能重复:
  PHP DOMDocument - get html source of BODY

我将以下代码作为变量并尝试抓取body标签之间的所有内容(同时保留p标签等)。这是最好的方法吗?

  • pregmatch
  • strpos / substr

    <head>
    <title></title>
    </head>
    <body>
        <p>Services Calls2</p>
    </body>
    

3 个答案:

答案 0 :(得分:4)

都不是。您可以使用XML解析器,例如DomDocument

$dom = new DOMDocument();
$dom->loadHTML($var);

$body = $dom->getElementsByTagName('body')->item(0);

$content = '';

foreach($body->childNodes as $child)
  $content .= $dom->saveXML($child);

答案 1 :(得分:1)

试试这个,$ html有文字:

$s = strpos($html, '<body>') + strlen('<body>');
$f = '</body>';

echo trim(substr($html, $s, strpos($html, $f) - $s));

答案 2 :(得分:0)

我建议您使用preg_match,因为<p>Services Calls2</p>之间的内容可以一直更改,然后subtr或strpos将需要相当有争议的代码。

示例:

$a = '<h2><p>Services Calls2</p></h2>';
preg_match("/<p>(?:\w|\s|\d)+<\/p>/", $a, $ar);
var_dump($ar);

正则表达式只允许使用字母,空格和数字。