我将以下代码作为变量,并尝试获取正文标签之间的所有内容(同时保留 p 标签等)。这样做的最佳方法是什么?
- 预赛
strpos / substr
<head> <title></title> </head> <body> <p>Services Calls2</p> </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>
可以一直更改,然后 subtr 或 strpos 将需要相当有争议的代码。
例子:
$a = '<h2><p>Services Calls2</p></h2>';
preg_match("/<p>(?:\w|\s|\d)+<\/p>/", $a, $ar);
var_dump($ar);
正则表达式将只允许字母、空格和数字。