我知道这是一个老问题,但我偶然发现了这篇文章,寻找使用 CSS 创建超链接的解决方案并最终制作了我自己的,对于像我一样偶然发现这个问题的人可能会感兴趣:
这是一个名为 'linker();' 的 php 函数,它启用了一个虚假的 CSS 属性
连接:'url.com';
对于#id 定义的项目。只需让 php 在您认为值得链接的每个 HTML 项目上调用它。输入是 .css 文件作为字符串,使用:
$style_cont = file_get_contents($style_path);
以及对应项目的#id。这是整个事情:
function linker($style_cont, $id_html){
if (strpos($style_cont,'connect:') !== false) {
$url;
$id_final;
$id_outer = '#'.$id_html;
$id_loc = strpos($style_cont,$id_outer);
$connect_loc = strpos($style_cont,'connect:', $id_loc);
$next_single_quote = stripos($style_cont,"'", $connect_loc);
$next_double_quote = stripos($style_cont,'"', $connect_loc);
if($connect_loc < $next_single_quote)
{
$link_start = $next_single_quote +1;
$last_single_quote = stripos($style_cont, "'", $link_start);
$link_end = $last_single_quote;
$link_size = $link_end - $link_start;
$url = substr($style_cont, $link_start, $link_size);
}
else
{
$link_start = $next_double_quote +1;
$last_double_quote = stripos($style_cont, '"', $link_start);
$link_end = $last_double_quote;
$link_size = $link_end - $link_start;
$url = substr($style_cont, $link_start, $link_size); //link!
}
$connect_loc_rev = (strlen($style_cont) - $connect_loc) * -1;
$id_start = strrpos($style_cont, '#', $connect_loc_rev);
$id_end = strpos($style_cont,'{', $id_start);
$id_size = $id_end - $id_start;
$id_raw = substr($style_cont, $id_start, $id_size);
$id_clean = rtrim($id_raw); //id!
if (strpos($url,'http://') !== false)
{
$url_clean = $url;
}
else
{
$url_clean = 'http://'.$url;
};
if($id_clean[0] == '#')
{
$id_final = $id_clean;
if($id_outer == $id_final)
{
echo '<a href="';
echo $url_clean;
echo '" target="_blank">';
};
};
};
};
这可能可以使用 .wrap() 或 getelementbyID() 之类的命令来改进/缩短,因为它只生成<a href='blah'>
部分,但是</a>
如果没有开始子句,它仍然会消失,如果你只是将它们添加到任何地方:D