在HTML中提取链接和保存位置

时间:2013-11-21 02:56:01

标签: php html regex data-structures domdocument

我有html,我想要完成的是以下内容:

  • 扫描anchor链接的文字。
  • 提取anchor link详细信息并在html
  • 中将标记放置到其位置
  • 保存数据库中的文本后,将标记替换为与其位置关联的anchor link

所以,这是起始的html:

    <html>
        <body>
            <a href="somelink">Some text</a>
            <p>Some paragraph text</p>
            <a href="someotherlink">Some other text</a>
        </body>
    </html>

这是替换后生成的html:

    <html>
        <body>
            {articleLink0}
            <p>Some paragraph text</p>
            {articleLink1}
        </body>
    </html>

然后,在数据结构中,它将被构建为。正如您所看到的,索引位置会被反映出来(例如{articleLink0}会腐蚀到$data[0]

    $data = array(
        0 => array('href'=>'somelink','text'=>'Some text'),
        1 => array('href'=>'someotherlink','text'=>'Some other text')
    );

最后,我需要一种将内容放回数据结构中指定位置的方法。

1 个答案:

答案 0 :(得分:0)

循环遍历$data数组,生成一个包含所呈现的a标记的字符串,使用索引生成替换字符串,最后用生成的a标记替换替换字符串

  • a标记呈现=&gt;常规字符串连接
  • 替换的生成=&gt;常规字符串连接
  • 替换本身=&gt; str_replace

这样的事情应该有效:

foreach ($data as $key => $value) {
    // value and href have to be escaped, if they contain unsafe characters
    $aTag = sprintf('<a href="%s">%s</a>', $value['href'], $value['text']);
    $toReplace = sprintf('{articleLink%d}', $key);

    $htmlContent = str_replace($toReplace, $aTag, $htmlContent);
}