Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从IRC日志中提取文本_Php_Regex_Irc_Lda - Fatal编程技术网

Php 从IRC日志中提取文本

Php 从IRC日志中提取文本,php,regex,irc,lda,Php,Regex,Irc,Lda,我想从irc日志中提取文本。我有来自irssi的常规IRC日志,如下所示: 00:12 -!- Barbora [post@gw1-nat-041.roburnet.sk] has joined #post.sk 00:12 -!- mirinda [~post@195.91.55.136] has quit [Broken pipe] 00:12 -!- rogue1 [post@86-41-114-24-dynamic.b-ras2.lmk.limerick.eircom.net] has

我想从irc日志中提取文本。我有来自irssi的常规IRC日志,如下所示:

00:12 -!- Barbora [post@gw1-nat-041.roburnet.sk] has joined #post.sk
00:12 -!- mirinda [~post@195.91.55.136] has quit [Broken pipe]
00:12 -!- rogue1 [post@86-41-114-24-dynamic.b-ras2.lmk.limerick.eircom.net] has joined #post.sk
00:12 -!- Komunista is now known as Anonym9901
00:13 -!- ajka [~post@78.141.102.209] has quit [Client exited]
00:16 < blackmamba> no fuj
00:16 < blackmamba> Komunista: lol
00:16 < blackmamba> "este trochu"
00:16 < blackmamba> "je taky velky"
00:17 -!- majopo [post@adsl-d192.84-47-63.t-com.sk] has quit [Client exited]
00:19 -!- Anonym9901 is now known as Komunista
00:19 -!- dido84 [post@BSN-143-83-49.dial-up.dsl.siol.net] has quit [Client exited]
00:19 < Komunista> no?
00:20 < Komunista> ja by som*nadavka*l
00:20 < Komunista> ako pes
00:20 -!- Komunista is now known as Anonym53560 
no fuj lol este trochu je taky velky no ja by som*nadavka*l ako pes
所以,只有用空格分隔的单词,没有其他,没有刻痕,没有引用标记,问号等。我需要它作为LDA的输入

我将通过后处理来消除刻痕,我认为这会更容易,还是

我更喜欢带正则表达式的PHP,我不擅长它,这就是为什么我请大家帮忙

谢谢你抽出时间

编辑:

现在我使用这个代码(感谢m.buettner):

$input=;
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“:-Þ”、“:-Þ”、“:-b”、“:b”、“=P”、“>:o”、“>:o”、“:-o”、“:o”、“:o”,“o.o”、“o.o”、“8-0”、“>:\”、“>:/”、“:-/”、“:-”、“:\”、“=/”、“=\”、“:S”、“:”(“、”;”(“]);
$input=str_替换($smiles,,$input);
$resultStr='';
preg_match_all('/^\d\d:\d\d\s+\s([^\r\n]*)/m',$input,$matches);
$resultStr=内爆(“”,$matches[1]);
$resultStr=preg_replace('/[^\w\s*]+/',''$resultStr);
preg_match_all('//m',$input,$nicks);
$nicks[0]=str_replace(['','%','+','$','@'],'','$nicks[0]);
$resultStr=str_replace($nicks[0],“”,$resultStr);
如有任何改进建议,我们将不胜感激;)

诸如此类的建议

preg_match_all('/^\d\d:\d\d\s+<[^>]*>([^\r\n]*)/m', $input, $matches);

$resultStr = implode(' ', $matches[1]);
$resultStr = preg_replace('/[^\w\s*]+/', '', $resultStr);
preg_match_all('/^\d\d:\d\d\s+]*>([^\r\n]*)/m',$input,$matches);
$resultStr=内爆(“”,$matches[1]);
$resultStr=preg_replace('/[^\w\s*]+/',''$resultStr);
首先,我们匹配
hh:mm
之后的所有内容,直到行尾。然后,我们将这些结果与空格连接在一起,然后删除所有非单词、非空格、非星号字符。在
preg\u replace

的字符类中添加其他要保留的字符,类似这样的情况

preg_match_all('/^\d\d:\d\d\s+<[^>]*>([^\r\n]*)/m', $input, $matches);

$resultStr = implode(' ', $matches[1]);
$resultStr = preg_replace('/[^\w\s*]+/', '', $resultStr);
preg_match_all('/^\d\d:\d\d\s+]*>([^\r\n]*)/m',$input,$matches);
$resultStr=内爆(“”,$matches[1]);
$resultStr=preg_replace('/[^\w\s*]+/',''$resultStr);

首先,我们匹配
hh:mm
之后的所有内容,直到行尾。然后,我们将这些结果与空格连接在一起,然后删除所有非单词、非空格、非星号字符。在
preg\u replace

中的character类中添加您想要保留的其他字符类似于
Barbora
blackmamba
Komunita
@Fake.It.Til.U.Make.It Just text from humans:)的单词,如果有必要,我将通过后处理来删除刻痕。我不希望IRC服务器上的线条,除了“/me”之外“命令,如果你知道它是什么。关于
已经加入了
和其他单词,如
Barbora
blackmamba
komunita
@Fake.it.Til.U.Make.it只是来自人类的文本:)如果有必要,我将通过后处理来删除刻痕。我不想从IRC服务器中删除行,除非从“/me”命令。谢谢,但是数组$matches似乎是空的,我有PHP5.4,或者是正则表达式有问题?我试过这个:preg_match_all('/^\d\d:\d\d\s+\s([^\r\n]*)/m',$input,$matches);它对我有效。这是好的解决方案,还是你有更好的解决方案?对不起,我错过了
^[]后面的
*
。我现在就解决这个问题。如果您的模式匹配所有可能的情况,也没关系。谢谢,但是数组$matches似乎是空的,我有PHP5.4,或者是regex有问题?我尝试过这个:preg_match_all('/^\d\d:\d\d\s+\s([^\r\n]*)/m',$input,$matches);这对我很有效。这是一个好的解决方案,还是您有更好的解决方案?对不起,我错过了
[^>]
后面的
*
。我现在就解决这个问题。如果您的模式与所有可能的情况都匹配,那么就可以了。