php - 如何使用 domcrawler 替换特定元素的文本
问题描述
我已经能够使用 Symfon dom-crawler 库来检索值并更改元素的属性和值,如下面的代码所示。
$doc = new DOMDocument;
$doc->loadHtml(file_get_contents($_SERVER['DOCUMENT_ROOT'].'/pages/example.html'));
// closure => setter function
$crawler = new Crawler($doc);
$setText = function (object $templateData) use ($logger, $crawler, $doc) {
$crawler->filter($templateData->selector)
->each(function (Crawler $crawler) use ($logger, $templateData, $doc) {
foreach ($crawler as $node) {
//set attributes (classes)..
if($templateData->setClass){
/** @noinspection PhpPossiblePolymorphicInvocationInspection */
$node->setAttribute('class', $node->getAttribute('class'). ' '.$templateData->setClass);
}
//note: this just keeps adding new values
// to the node but I need a way to replace the
// text at once instead of just adding new values
//sets values (text only)
if($templateData->value){
//$node->parentNode->insertBefore($doc->createTextNode($value), $node);
$node->appendChild($doc->createTextNode($templateData->value));
}
}
});
return $templateData->result?$crawler->html():'result option not enabled!!';
};
有没有办法使用 symfony 的 dom-crawler 仅更改或替换元素的文本..?
任何帮助将不胜感激。谢谢你。
解决方案
推荐阅读
- karate - 如何在空手道的嵌套级别上比较 json 对象
- oracle - 与在构建步骤中执行时相比,脚本在命令行中执行时的结果有何不同
- linux - Docker容器中的尾部:无法分配内存
- r - R 未来、doSNOW、并行和 foreach 用于异步执行
- python - 如何在“后台”中运行部分脚本(单个函数)?
- sed - 在 SED 中如何通过特定单词查找一行,将该行替换为另一个内容
- python - 具有多对多字段和中间表的模型的django查询集中不必要的连接
- fosuserbundle - FriendsOfSymfony/FOSOAuthServerBundle 未设置用户名
- android - 过滤复杂数据(对象和自定义布局)的 SearchView
- c++ - 生成具有类的 Actor (UE4)