我想向您展示我所遇到的问题的解决方法,也许您可以帮助我解决特定的问题,甚至可以改变方法。
我有一些这样的日志行,以下面两个为例:
00:00:02.673: INFO: sesison1::logging : logSessionStarted(ch...")
EntrySuccessfull::execute
如您所见,有些带有时间戳,有些没有时间戳,问题是我想在第一次出现'::'之前获取所有数据。
第二种情况现在很简单,类似这样的工作方式:
(.*)(?=::)
返回所有数据集:
00:00:02.673: INFO: sesison1
EntrySuccessfull
很明显,对于第一行,这不是我想要的。我想获得sesision1,所以我尝试做一个类似lookbehind的操作,直到找到空格:
(?<=\s)(.*)(?=::)
所以最后,我可以做类似find'::'的操作,然后返回到空格或字符串的开头,但是第二次更改将返回完全相同的结果,例如忽略sesision1之前的空格。
有没有更好的方法或有什么问题?
PD使用记事本++完成的所有测试
答案 0 :(得分:2)
<?php
include "config.php";
/* Getting post data */
$rowid = $_POST['rowid'];
$rowperpage = $_POST['rowperpage'];
/* Count total number of rows */
$query = "SELECT count(*) as allcount FROM employee";
$result = mysqli_query($con,$query);
$fetchresult = mysqli_fetch_array($result);
$allcount = $fetchresult['allcount'];
/* Selecting rows */
$query = "SELECT * FROM employee ORDER BY id ASC LIMIT ".$rowid.",".$rowperpage;
$result = mysqli_query($con,$query);
$employee_arr = array();
$employee_arr[] = array("allcount" => $allcount);
while($row = mysqli_fetch_array($result)){
$empid = $row['id'];
$empname = $row['emp_name'];
$salary = $row['salary'];
$employee_arr[] = array("empid" => $empid,"empname" => $empname,"salary" => $salary);
}
/* encoding array to json format */
echo json_encode($employee_arr);
匹配单词边界,因此您可以使用 <script type="text/javascript">
// Total number of rows visible at a time
var rowperpage = 5;
$(document).ready(function(){
getData();
$("#but_prev").click(function(){
var rowid = Number($("#txt_rowid").val());
var allcount = Number($("#txt_allcount").val());
rowid -= rowperpage;
if(rowid < 0){
rowid = 0;
}
$("#txt_rowid").val(rowid);
getData();
});
$("#but_next").click(function(){
var rowid = Number($("#txt_rowid").val());
var allcount = Number($("#txt_allcount").val());
rowid += rowperpage;
if(rowid <= allcount){
$("#txt_rowid").val(rowid);
getData();
}
});
});
/* requesting data */
function getData(){
var rowid = $("#txt_rowid").val();
var allcount = $("#txt_allcount").val();
$.ajax({
url:'getEmployeeInfo.php',
type:'post',
data:{rowid:rowid,rowperpage:rowperpage},
dataType:'json',
success:function(response){
createTablerow(response);
}
});
}
/* Create Table */
function createTablerow(data){
var dataLen = data.length;
$("#emp_table tr:not(:first)").remove();
for(var i=0; i<dataLen; i++){
if(i == 0){
var allcount = data[i]['allcount'];
$("#txt_allcount").val(allcount);
}else{
var empid = data[i]['empid'];
var empname = data[i]['empname'];
var salary = data[i]['salary'];
/* This is is the place where they get printed in HTML file */
$("#emp_table").append("<tr id='tr_"+i+"'></tr>");
$("#tr_"+i).append("<td align='center'>"+empid+"</td>");
$("#tr_"+i).append("<td align='left'>"+empname+"</td>");
$("#tr_"+i).append("<td align='center'>"+salary+"</td>");
}
}
}
</script>
这从单词边界开始,并且匹配多个非空白字符,直到到达\b
答案 1 :(得分:0)
使用(\S+)(?=::)
,您可以同时获得两个匹配而没有空匹配。请检查here。