在PHP中将字符串中的html代码替换为空字符串
我已经4-5年没有做过PHP编程了,上一次使用PHP是在2016年或2017年。我遇到了这个非常简单的问题 我有这根绳子。现在请注意不要删除任何一个空格,因为这非常重要在PHP中将字符串中的html代码替换为空字符串,php,regex,Php,Regex,我已经4-5年没有做过PHP编程了,上一次使用PHP是在2016年或2017年。我遇到了这个非常简单的问题 我有这根绳子。现在请注意不要删除任何一个空格,因为这非常重要 $s = 'Congratulations, you completed the quiz! <h2>{{result-title}}</h2> {{result-text}} You achieved {{points}} points from {{questions}} questions.\n\
$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>
';
$s='恭喜你,你完成了测验!
{{result title}}
{{result text}}
您从{{questions}}问题中获得了{{points}}点。\n\n
您的电子邮件地址:
';
现在我只想删除这部分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>
您的电子邮件地址:
输出类似于:
Congratulations, you completed the quiz!
<h2>{{result-title}}</h2>
{{result-text}}
You achieved {{points}} points from {{questions}} questions.
恭喜你,你完成了测验!
{{result title}}
{{result text}}
你从{{questions}问题中获得了{{points}}点。
我想用正则表达式来实现它,因为我认为它可能非常有用。
我想出了这个模式,但似乎仍然不起作用代码>返回一个空字符串。有人能帮我吗。我很感激 $regex='#\(.+?)\#s';
$regex = '#\<div class="chained-quiz-email"\>(.+?)\<\/div\>#s';
preg_match($regex, $s, $matches);
var_dump($matches[0]);
预匹配($regex,$s,$matches);
var_dump($matches[0]);
您可以使用内置的php函数strip_tags()
刚刚在正则表达式上添加了一些配置
来自
$pattern = '/<div class="chained-quiz-email">.*?<\/div>/is';
$pattern='/.*?/i';
将其更改为:
<?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);
$pattern='/.*?/is';
你可以查一下
对于正则表达式的实验也是非常有用的
归功于@CBroe和@Lawrence(他有另一种解决方案)使用类
你好,艾哈迈德。。。我不是在寻找正则表达式或删除html代码的方法。实际上,这并不包括从表单中点击按钮。哦,是的,当然可以。reply updated简单分解就足够了,$pattern='/.*?/i'
–差不多了,/
需要转义,因为您已经将其用作分隔符,并且需要使用s
修饰符,以便
也匹配换行符@劳伦斯·切罗尼补充道,这是一个答案。看起来good@IceBear在这种情况下,使用CBroe code然后将\n\n更改为类似于| |
的内容,并执行拆分或在输出时删除它,尽管xy似乎可以更改字符串,只需删除它或对其执行条件以不添加它,或将其作为模板添加{form}
然后呈现它的任何内容都会发生更改,所以如果表单未定义,则不会为其输出值
$pattern = '/<div class="chained-quiz-email">.*?<\/div>/is';
<?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);