提取并显示从 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 位数字逗号的主要内容,如果未能解决你的问题,请参考以下文章

将采用模型并将其显示在页面中分隔的网格中的 Qt 组件

列中分隔的字符串的PHP数组到关联数组[重复]

PHP:如何在我的页面上显示文本文件的内容?

PHP:如何从字符串转储中提取 JSON 字符串

如何使用 PHP 从图像中提取文本

从VBA中的PowerPoint文件中提取所有文本