一个简单的正则匹配 剧本人物出场顺序提取

长篇小说需要整理每集人物名称并按照出场顺序排列输出
剧本和最终要的人物出场顺序大体上是这样的:

[infobox title=”我需要把人名的部分正则匹配出来”]煜宝(心声):(呼吸急促)一定……一定不能再被他们抓回去!
(然而前方已经没有路了。在突然的一道惊雷中,他停止了奔跑。赫然出现在眼前的,
是一个悬崖)
煜宝:(停止奔跑)啊,落魂崖!(迅速回头,然而包围圈已经形成)
女一:哟,怎么停下来了,你倒是接着跑呀(得意)。(忽而咬牙)两次都在我眼皮
子底下跑了,你真是挺能耐啊。(讽刺,愤恨)
男一:煜宝,跟我们回去吧,你逃不掉的。(带着威胁的语气)
煜宝:我是不会再跟你们回去的![/infobox]
正则表达式如下:

$zz = '/\n(.*?):/iU';

匹配的时候发现,有的人名后面附带个括号 (心声) ,就很烦
这样的话就要先重新正则一哈,把所有括号内的文字弄掉
这里我用的是正则查找替换:

$str = preg_replace('/(.*?)/', '', $data['wz']);

然后就是foreach遍历掉重复的人物名
直接附上完整的php代码吧!

$data = $request->only(['wz']);
$str = preg_replace('/(.*?)/', '', $data['wz']);
$zz = '/\n(.*?):/iU';
preg_match_all($zz, $str, $matches);
$name = array();
foreach ($matches[1] as $key => $value) {
	if (!in_array($value, $name)) {
		$name[] = $value;
	}
}
$pjname = implode(' , ', $name);
return $pjname;

顺便吐槽一句…铺页面真的好累啊…
每次都是敲代码两分钟,铺页面一小时的那种…
但是一个好看的UI真的很重要

附上成品Demo演示页面

>>>点此访问演示页面<<<

PS:本人小白,只是记录一下自己做过的东西,大佬们嘴下留情..
如果对我的代码有比较好的建议欢迎指正! :huaji4:

风影OvO

风影OvO, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA 4.0协议进行授权 | 转载请注明原文链接

3 Comments

  • 吊啊

  • 阿萨帝

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐