提取并显示从 PHP 中的文本文件中分隔的所有 10 位数字逗号
Posted
技术标签:
【中文标题】提取并显示从 PHP 中的文本文件中分隔的所有 10 位数字逗号【英文标题】:Extract and display all 10 digit numbers comma separated from a text file in PHP 【发布时间】:2021-07-31 15:34:55 【问题描述】:我正在寻找一种从包含字母、数字和特殊字符的文本文件中提取所有 10 位数字逗号分隔的方法。
我现在能做的是使用这个代码:
$texts = "cache/en.txt";
$contents = file_get_contents($texts);
$showtexts = explode(',', $contents);
$showtextsclean = preg_replace('/\d10/', '', $showtexts);
foreach($showtextsclean as $final)
echo $final;
上面的代码的作用是相反的,它显示除 10 位数字之外的所有内容。我真正想要的是提取所有 10 位数字并将逗号与示例分开:
"left-right-kato":1566025480,"ladies-night-sys-bjerre":1563248008,"catch-fire-bj-rnskov":1563179104,"jeg-dr-mte-om-en-r-d-lavth-ngende-sol-rasmus-walter":1562991777,"45-fahrenheit-girl-the-remixes-drew-sycamore":"not found","bebe-zk":1469386794,"ahora-rozenberg":1566345117,"precious-leave-me-on-the-floor-liss":1560827606
这样我就可以这样呼应了:
1566025480,1563248008,1563179104,1562991777,1469386794,1566345117,1560827606
【问题讨论】:
您的示例是 JSON,json_decode()
那个字符串,遍历项目并选择 10 位数的值
该数据看起来是有效的 JSON。假设这不是巧合,您应该解码 JSON,而不是用正则表达式来处理它。
@brombeer 我知道是 JSON。我完全按照它在某处的方式使用该文件,但我只需要其他 10 位数字
this 可能有帮助
或者如果有混合长度数字:implode(",",preg_grep('~^\d10$~',json_decode($json_str,true)))
【参考方案1】:
<?php
$showtextsclean = '"left-right-kato":1566025480,"ladies-night-sys-bjerre":1563248008,"catch-fire-bj-rnskov":1563179104,"jeg-dr-mte-om-en-r-d-lavth-ngende-sol-rasmus-walter":1562991777,"45-fahrenheit-girl-the-remixes-drew-sycamore":"not found","bebe-zk":1469386794,"ahora-rozenberg":1566345117,"precious-leave-me-on-the-floor-liss":1560827606';
$digig10 = '/\b(\d10)\b/';
preg_match_all($digig10,$showtextsclean,$match);
print_r($match[1]);
?>
它取代了所有不是大于或小于 10 位的数字
并从末尾修剪逗号并开始
给出这个结果:
Array
(
[0] => 1566025480
[1] => 1563248008
[2] => 1563179104
[3] => 1562991777
[4] => 1469386794
[5] => 1566345117
[6] => 1560827606
)
两种解决方案在线 PHP shell 的速度比较。
这个preg_match_all solution的速度
Real time: 0.014 s
User time: 0.006 s
Sys. time: 0.009 s
CPU share: 99.45 %
Exit code: 0
与bubble bubble 的解决方案@ 987654323@ 的速度相比 几乎一样:
Real time: 0.017 s
User time: 0.011 s
Sys. time: 0.006 s
CPU share: 98.71 %
Exit code: 0
sulutio foreach of berend
Real time: 0.016 s
User time: 0.006 s
Sys. time: 0.008 s
CPU share: 87.91 %
Exit code: 0
【讨论】:
这不会用逗号分隔 它还会捕获大于或小于 10 位的其他数字以上是关于提取并显示从 PHP 中的文本文件中分隔的所有 10 位数字逗号的主要内容,如果未能解决你的问题,请参考以下文章