过滤txt文件中的行并使其成为http href链接

时间:2015-08-11 10:48:42

标签: javascript php jquery html

这次我想要做的是获取()之间的数字,过滤掉它们,这样我就可以把它们放在一个固定的http href链接中。

文本文件示例:

09:02:10 - Admin SO_Conner (1374991) teleported to player Footman_Skull_of_Reyne (1050854). 
09:02:15 - Admin SO_Conner (1374991) teleported to player Levy_Eddin_of_Reyne (1166164). 
09:02:22 - Admin SO_Conner (1374991) faded out player Levy_Eddin_of_Reyne (1166164). 
09:02:27 - Admin SO_Conner (1374991) teleported to player Valyrian_Militia_Crazymortal (1575057).

链接看起来像这样:

09:02:27 - Admin SO_Conner  (<a href="?get_engine&loopup=1374991">1374991</a>) teleported to player Valyrian_Militia_Crazymortal (<a href="?get_engine&loopup=1575057">1575057</a>)

我已经尝试过这样做了:

<?php

    if(strpos($line,'1374991') === false)

?>

但我似乎无法找到一种方法让它发挥作用。

2 个答案:

答案 0 :(得分:2)

使用preg_replace

$file = file(/* path to file */);
foreach($file as &$line) {
    $line = preg_replace('/(\d\d:\d\d:\d\d - [a-zA-Z _]+\()(\d+)(\)[a-zA-Z _]+\()(\d+)(\).*)/', '$1<a href="?get_engine&loopup=$2">$2</a>$3<a href="?get_engine&loopup=$4">$4</a>$5', $line);
}

这应该可行,即使正则表达式模式可以更简单。如果您确定txt文件的每一行的结构始终相同,则可以改为使用以下模式:

$line = preg_replace('/\((\d+)\)/', '<a href="?get_engine&loopup=$1">$1</a>', $line);

答案 1 :(得分:0)

使用此正则表达式查找括号之间的内容:

var regExp = /\(([^)]+)\)/;
var matches = regExp.exec("09:02:10 - Admin SO_Conner (1374991) teleported to player Footman_Skull_of_Reyne (1050854).");

Regex Demo

使用简单的字符串连接形成href

var href = "?get_engine&loopup=" + matches[1];

然后将此attrbiute添加到锚元素:

$("a").attr("href", href);