您可以使用, 并检查节点DOMDocument
上是否有任何文本内容:<p>
$doc = new DOMDocument;
$doc->loadHTML( $input);
$p = $doc->getElementsByTagName('p')->item(0);
$children = $p->childNodes;
$img_found = false; $error = false;
foreach( $children as $child) {
if( $child->nodeType == XML_TEXT_NODE && !$img_found) {
// Text before the image, OK, continue on
continue;
}
if( $child->nodeType == XML_ELEMENT_NODE) {
// DOMElement node
if( !($child->tagName == 'img')) {
// echo "Invalid HTML element found";
$error = true;
} else {
$img_found = true;
}
} else {
// echo "Invalid node type!";
$error = true;
}
}
// No errors and we found at least one image, we're good
if( $img_found && !$error) {
echo 'ok' . "\n";
} else {
echo 'NOT ok' . "\n";
}
您可以在此演示中看到它通过了所有测试。它满足以下要求:
<p>
标签内只有图像和文本。任何其他标签均无效。如果这是不正确的,请根据您的需要进行修改。
- 如果有文本,它必须在我们检测到
<img>
标签之前出现。