将中间的文本抓取到变量


grab text in the middle to a variable

可能的重复项:
PHP DOMDocument - 获取 HTML 源代码 BODY

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

  • 预选赛
  • strpos/substr

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

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

$dom = new DOMDocument();
$dom->loadHTML($var);
$body = $dom->getElementsByTagName('body')->item(0);
$content = '';
foreach($body->childNodes as $child)
  $content .= $dom->saveXML($child);

试试这个,$html有这样的文字:

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

我建议您使用preg_match,因为<p>Services Calls2</p>之间的内容会一直变化,然后减法或strpos将需要相当有争议的代码。

例:

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

正则表达式将只允许字母、空格和数字。