Javascript PHP如何用值替换html标记
我在一个文本文件中有数千个静态HTML行,我想保留名为“num”的特定HTML标记之间的“H-number”值,并使用PHP将其转换为链接。例如,HTML字符串如下所示:Javascript PHP如何用值替换html标记,javascript,php,html,function,dynamic,Javascript,Php,Html,Function,Dynamic,我在一个文本文件中有数千个静态HTML行,我想保留名为“num”的特定HTML标记之间的“H-number”值,并使用PHP将其转换为链接。例如,HTML字符串如下所示: H7585… 从这里,我想得到零件H7585,并将其转换为这样的东西,保持“H-number”值: .. 但是,所有的“H-number”代码(如H7585)都是不同的,它们不在PHP变量中,因为所有内容都是HTML文本字符串。我已经尝试过PHP函数preg_match和preg_replace,但是我没有找到解决方案 我试过
H7585…
从这里,我想得到零件H7585
,并将其转换为这样的东西,保持“H-number”值:
..
但是,所有的“H-number”代码(如H7585
)都是不同的,它们不在PHP变量中,因为所有内容都是HTML文本字符串。我已经尝试过PHP函数preg_match和preg_replace,但是我没有找到解决方案
我试过的就是这个。但我不知道如何获得不同的H值来显示:
$string='…
H7585……
H72000……
H8525代码>-(尽管有数千行这样的代码,使用不同的H号代码)
$string=preg_replace(“/(.+?)/is“,”,$string)代码>
$echo$string代码>
有人能帮我吗?非常感谢。您可以通过创建文档、将HTML加载到文档中、使用查找所需的节点,然后用新创建的链接元素替换它们来利用:
$domDocument = new \DOMDocument();
$domDocument->loadHTML(utf8_decode($markup), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD | LIBXML_NOWARNING | LIBXML_NOERROR);
$domDocument->encoding = 'utf-8';
$xpath = new DOMXPath($domDocument);
/** @var DOMElement $numElement */
foreach ($xpath->query('//num') as $numElement) {
$linkElement = $domDocument->createElement('a');
$linkElement->setAttribute('href', "https://link-here.php?id={$numElement->textContent}");
$numElement->parentNode->replaceChild($linkElement, $numElement);
$linkElement->appendChild($numElement);
}
$newMarkup = $domDocument->saveHTML();
演示:
注意:不建议使用正则表达式来解析XML/HTML。这是否回答了您的问题?我真的很感谢你的帮助。代码工作得非常完美,这正是我所需要的。我想感谢你抽出时间来帮助我。继续努力!我有个问题。我可以对代码进行哪些更改,以使输出保持带有特殊口音或字符的单词的完整性?@Arlo检查更新的代码(我没有更新演示链接,只是更新了答案中的代码)。更新效果非常棒!所有utf-8字符现在都显示重音。代码工作得很好!我真的很感激。如果字符串还包括希腊字母和其他口音,如Azōr或Ἀζὼρ用什么替代utf-8?
<?php
$str = '</tvm><br><num>H7585</num></td><td><font color="#663399">......</tvm><br><num>H72000</num></td><td><font color="#663399">......</tvm><br><num>H8525</num></td><td><font color="#663399">';
$res = preg_replace('/<num>(.+?)<\/num>/i','<a href="$1"><num>$1<\/num><\/a>', $str);
var_dump($res);