【问题标题】:Extract and display all 10 digit numbers comma separated from a text file in PHP提取并显示从 PHP 中的文本文件中分隔的所有 10 位数字逗号
【发布时间】:2021-07-31 15:34:55
【问题描述】:

我正在寻找一种从包含字母、数字和特殊字符的文本文件中提取所有 10 位数字逗号分隔的方法。

我现在能做的是使用这个代码:

$texts  = "cache/en.txt";
$contents = file_get_contents($texts);
$showtexts = explode(',', $contents);
$showtextsclean = preg_replace('/\d{10}/', '', $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 可能有帮助

标签: php regex replace


【解决方案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(\d{10})\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 位的其他数字
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
相关资源
最近更新 更多