Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.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
使用javascript或其他语言拆分标记_Javascript_Php - Fatal编程技术网

使用javascript或其他语言拆分标记

使用javascript或其他语言拆分标记,javascript,php,Javascript,Php,我有一堆标签需要为我的论文分析。由于工作量很大,我想知道是否有可能使这个过程自动化 我想用括号中显示的数字来打断每个标记。此数字显示该标记的频率,但手动拆分标记时会有所帮助 有谁能帮我用一个JavaScript或PHP脚本将标签拆分成一行 这是标签的一个示例: 1001-import (1) 1001-must-read-2008-edition (1) 1001-must-read-books (2) 1001-must-reads (1) 1001-read (1) 1010 Challen

我有一堆标签需要为我的论文分析。由于工作量很大,我想知道是否有可能使这个过程自动化

我想用括号中显示的数字来打断每个标记。此数字显示该标记的频率,但手动拆分标记时会有所帮助

有谁能帮我用一个JavaScript或PHP脚本将标签拆分成一行

这是标签的一个示例:

1001-import (1) 1001-must-read-2008-edition (1) 1001-must-read-books (2) 1001-must-reads (1) 1001-read (1) 1010 Challenge (1) 10B (1) 10th (1) 11 in 11 (1) 11 in 11 - Read (1) 11 in 11 - Travel (1) 11-22-2011 (1) 11-22-2011take2 (1) 111 Science Fiction (1) 11JAN10 (1) 11th (1) 11th century (1) 12 in 12 (1) 12 år (1) 12/12/13 Tyler Deal - letter sent (1) 12/20/2011 (1) 12th (1) 13 (1) 13 år (1) 131 (1) 14 år (1) 14-15 (1) 15 år (1) 16 år (1) 1659 (1) 168 sidor (1) 17 år (1) 18S (1) 18x11 (1) 1900's (late) (1) 1945-1999 (1) 1950-1999 (1) 1960s-'70s novels (1) 1970 (1) 1970'erne (1) 1970s (36) 1970s authorship (1) 1970s fiction (1) 1979 (27) 1979 pub (1) 1979AD (1) 1980 (2) 1980s (7) 1981 (3) 1981/02 (1) 1982 (3) 1983 (1) 1984 (1) 1986 (1) 1988 (2) 1988-1991 (1) 1989 (1) 1989 reading (1) 1990 (1)

此JavaScript应该可以实现以下功能:

var str=“1001 import(1)1001-must-read-2008-edition(1)1001必读书籍(2)1001必读(1)1001阅读(1)1010挑战(1)10B(1)10(1)11中11(1)11中11(1)11中11-11中11阅读(1)11中11-旅游(1)11-22-2011(1)11-22-2011(1)制作2(1)111科幻小说(1)11(1)11(1)11(1)11(1)11世纪(1)12(1)12(1)12/12/13泰勒交易-信件寄出(1)12/20/2011(1)12(1)13(1)13år(1)131(1)14år(1)14-15(1)15år(1)1659(1)168 sidor(1)17år(1)18x11(1)1900(后期)(1)1945-1999(1)1950-1999(1)20世纪60年代至70年代小说(1)1970-70年代小说(1)1970年代(1)erne(1)1970年代(1)36(1)1970年代小说作者(1)1979)271979AD(1)1980(2)1980(7)1981(3)1981/02(1)1982(3)1983(1)1984(1)1986(1)1988(2)1988-1991(1)1989(1)1989读作(1)1990(1)
var tags=str.split(/\)(?=\w)/g)//在后面跟一个字母的每个“)”处拆分标记列表。
.map(函数(对){//(所以不要拆分“1900(晚)(1)”)
var值=pair.split(“(”);
var结果={
amount:parseInt(values.pop())//values中的最后一个值是计数
}
result.tag=values.join(“(”);//还原剩余字符串。
返回结果;
});
console.log(标记);
这里有一个PHP解决方案:

$t = array();
$tags = "your tags here...";
$tags = explode(")",$tags);
foreach($tags as $tagJunk){
    $tagJunk = explode("(", $tagJunk);
    $t[] = array("tag"=>trim($tagJunk[0]), "count"=>trim($tagJunk[1]));
}

这里有一个小问题:

您可以使用replace with regex

更新:刚刚在正则表达式上添加了一个无捕获组以消除空白。
(?:\s)
部分会执行此操作。
(\d*\)
查找类似于
)的内容。
$&
然后用于重新插入捕获的
(\d*\)
。以防有人想知道它是如何工作的

var input=“1001 import(1)1001-must-read-2008-edition(1)1001必读书籍(2)1001必读(1)1001阅读(1)1010挑战(1)10B(1)10(1)11in 11(1)11in 11阅读(1)11in 11-旅游(1)11-22-2011(1)11-22-2011(1)制作111科幻小说(1)11(1)11(1)11(1)11世纪(1)12(1)12(1)12/12/13泰勒交易-信件寄出(1)12/20/2011(1)12(1)13(1)13år(1)131(1)14år(1)14-15(1)15år(1)1659(1)168 sidor(1)17år(1)18x11(1)1900(后期)(1)1945-1999(1)1950-1999(1)20世纪60年代至70年代小说(1)1970-70年代小说(1)1970年代(1)erne(1)1970年代(1)36(1)1970年代小说作者(1)1979)271979AD(1)1980(2)1980(7)1981(3)1981/02(1)1982(3)1983(1)1984(1)1986(1)1988(2)1988-1991(1)1989(1)1989读作(1)1990(1)”;

console.log(input.replace(/\(\d*\)(?:\s)/g,$&\r\n');
欢迎使用SO。请访问查看询问内容和方法。提示:发布工作和编码可以准确显示您的预期输出吗?您是指
str=str.replace(/\(\d\)/g,
)还是
var list=str split(/\(\d\)/)
?`您好,谢谢您的快速响应。我还没有真正编写代码,但我正在寻找一种方法,将大量数据显示在单行上。输出结果如下:1001导入(1)
1001必读-2008-edition(1)
1001必读书籍(2)
请更新您的问题,而不是发表评论。是啊,我不知道您或我的问题为什么会被否决。看起来好像Downvoter先生今天出去了。我会投票给您,以平衡问题。事实上,平衡+1。检查对问题的评论。