我将以下代码作为变量并尝试抓取body标签之间的所有内容(同时保留p标签等)。这是最好的方法吗?
strpos / substr
<head>
<title></title>
</head>
<body>
<p>Services Calls2</p>
</body>
答案 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);
正则表达式只允许使用字母,空格和数字。