[英]Replace html code in a string with empty string in PHP
自从上一次我的 PHP 就像 2016 年或 2017 年一样,我已经有 4-5 年没有做过 PHP 编程了。我在这个非常简单的问题上遇到了麻烦。
我有这个字符串。 现在请注意不要删除一个空格,因为它非常重要。
$s = 'Congratulations, you completed the quiz!
<h2>{{result-title}}</h2>
{{result-text}}
You achieved {{points}} points from {{questions}} questions.\n\n
<div class="chained-quiz-email">
<form method="POST">
<p><label>Your email address:</label> <input type="email" name="chained_email_844640736"
id="chainedUserEmail" class="chained-quiz-email " required></p>
<input type="submit" id="submit-email" value="Submit" name="submit-email-btn844640736">
</form>
</div>
';
现在我只想删除这部分 html 代码。
<div class="chained-quiz-email">
<form method="POST">
<p><label>Your email address:</label> <input type="email" name="chained_email_844640736"
id="chainedUserEmail" class="chained-quiz-email " required></p>
<input type="submit" id="submit-email" value="Submit" name="submit-email-btn844640736">
</form>
</div>
output就像:
Congratulations, you completed the quiz!
<h2>{{result-title}}</h2>
{{result-text}}
You achieved {{points}} points from {{questions}} questions.
我正在考虑用正则表达式来做,因为我认为它可能非常有用。 我想出了这种模式,但似乎仍然不起作用$pattern = '/<div class="chained-quiz-email">.*?</div>/i';
我得到一个空字符串的返回。 有人可以帮我弄这个吗。 我很感激!
您可以使用内置的 php function strip_tags()。
<?php
$s = 'Congratulations, you completed the quiz!
<h2>{{result-title}}</h2>
{{result-text}}
You achieved {{points}} points from {{questions}} questions.\n\n
<div class="chained-quiz-email">
<form method="POST">
<p><label>Your email address:</label> <input type="email" name="chained_email_844640736"
id="chainedUserEmail" class="chained-quiz-email " required></p>
<input type="submit" id="submit-email" value="Submit" name="submit-email-btn844640736">
</form>
</div>
';
echo '<pre>';
echo strip_tags( $s,'<h2>');
echo '</pre>';
$regex = '#\<div class="chained-quiz-email"\>(.+?)\<\/div\>#s';
preg_match($regex, $s, $matches);
var_dump($matches[0]);
使用domdocument class
<?php
$doc = new DOMDocument;
$doc->loadHTML($s);
$thedocument = $doc->documentElement;
$selector = new DOMXPath($doc);
foreach($selector->query('//div[contains(attribute::class, "chained-quiz-email")]') as $e ) {
// Select all child node
$e->parentNode->removeChild($e);
}
echo $doc->saveHTML($thedocument);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.