如何使用简单的html dom用链接替换关键字

时间:2014-08-20 10:23:16

标签: php html str-replace simple-html-dom

如何直接在hello标记内的html内容中查找<p>个关键字(不是子标记,例如<a>标记)并将其替换为链接

我不想改变html属性

HTML:

<p>hello world
    <a href="hello.html">hello</a>
</p>
<img src="hello.png" alt="image" />

我需要这样的输出:

<p><a href="hello">hello</a> world
    <a href="hello.html">hello</a>
</p>
<img src="hello.png" alt="image" />

不是这个:

<p><a href="hello">hello</a> world
    <a href="<a href="hello">hello</a>.html">hello</a>
</p>
<img src="<a href="hello">hello</a>.png" alt="image" />

我尝试了什么

include('inc/simple_html_dom.php');
// Create a DOM object
$html = new simple_html_dom();

// Load HTML from a string

$dom = '
<p>hello world
    <a href="hello.html">hello</a>
</p>
<img src="hello.png" alt="image" />
';

$html->load($dom);

foreach($html->find('p') as $p)
{
    $p->innertext = str_replace($searchArray, $replaceArray, $p->innertext);
}

echo $html;

2 个答案:

答案 0 :(得分:1)

你应该可以这样做:

foreach($html->find('text') as $text){
  if($text->parent->tag != 'p') continue;
  $text->outertext = str_replace($searchArray, $replaceArray, $text->outertext);
}

答案 1 :(得分:0)

在这种特殊情况下,如果你设置

$searchArray = 'hello ';  // with a blank space after hello

它应该按你的意愿工作