Php 仅替换HTML标记之外的单词
我想替换HTML标记之外的单词 所以如果我Php 仅替换HTML标记之外的单词,php,regex,dom,preg-replace,Php,Regex,Dom,Preg Replace,我想替换HTML标记之外的单词 所以如果我 <a href="test.html" title="Hello">Hello</a> 获取dom的文本 现在我可以循环查看结果: foreach($test as $t) { if (strpos($t->innertext,$word)!==false) { $t->innertext = preg_replace( '/\b' . preg_quote(
<a href="test.html" title="Hello">Hello</a>
获取dom的文本
现在我可以循环查看结果:
foreach($test as $t) {
if (strpos($t->innertext,$word)!==false) {
$t->innertext = preg_replace(
'/\b' . preg_quote( $word, "/" ) . '\b/i',
"<a href='$url' target='$target' data-uk-tooltip title='$item->title'>\$0</a>",
$t->innertext,1
);
}
}
foreach($t测试){
if(strpos($t->innertext,$word)!==false){
$t->innertext=preg\u replace(
“/\b”.preg_quote($word,“/”)。\b/i“,
"",
$t->innertext,1
);
}
}
但不幸的是,如果
$item->title
包含$word,HTML结构就会崩溃。看起来有很多混乱。根据,$dom->find($tag)
返回所有标记的数组,但您正在寻找名为text
的标记
也许你应该试试$test=$dom->find('a')代码>而不是
同样在代码中,不清楚变量$url
、$target
和$item
来自何处:
foreach($test as $t) {
if (strpos($t->innertext,$word)!==false) {
$t->innertext = preg_replace(
'/\b' . preg_quote( $word, "/" ) . '\b/i',
"<a href='$url' target='$target' data-uk-tooltip title='$item->title'>\$0</a>",
$t->innertext,1
);
}
}
使用DOMDocument您已经问过一次这个问题是的,ppl告诉我使用DOM库。是的。但这并不能解决我的问题。新个案;)“嗯,我学到了我必须使用DOM解析器来归档它。”。。。我能听到体育场周围的欢呼声,甚至还有墨西哥波!也许终究还是有希望的!也许小马可以停下来。。。更严肃的一点是:PHP确实有两个非常好的内置XML解析器(用于HTML):SimpleXML:和DOMDocument:-为什么不使用其中一个呢?@CD001:不能用SimpleXML解析HTML文档(大多数情况下不符合XML),所以唯一的方法是DOMDocument
。
foreach($test as $t) {
if (strpos($t->innertext,$word)!==false) {
$t->innertext = preg_replace(
'/\b' . preg_quote( $word, "/" ) . '\b/i',
"<a href='$url' target='$target' data-uk-tooltip title='$item->title'>\$0</a>",
$t->innertext,1
);
}
}
foreach($test as $t) {
if (strpos($t->innertext,$word)!==false) {
$t->innertext = preg_replace(
'/\b' . preg_quote( $word, "/" ) . '\b/i',
"<a href='$url' target='$target' data-uk-tooltip title='$item->title'>\$0</a>",
$t->innertext,1
);
}
}
foreach($test as $t) {
if (strpos($t->innertext,$word)!==false) {
$t->innertext = preg_replace(
'/\b' . preg_quote( $word, "/" ) . '\b/i',
"Replacement",
$t->innertext,1
);
}
}