PHP preg_replace多个替换

墙男孩

我在正则表达式方面相当弱,这让我头疼要尝试找出答案。我只是想从字符串中提取时间并修改时间的文本。我得到以下形式的字符串:

"Some text I don't care about | 2.3 seconds ago"
"Some text I don't care about | 5.2 minutes ago"
"Some text I don't care about | 7.0 hours ago"
"Some text I don't care about | 1.9 days ago"

我想将上述字符串分别替换为以下形式:

"2.3 secs"
"5.2 mins"
"7.0 hrs"
"1.9 days"

我知道在正则表达式中进行替换的基础知识,但是要删除我想要的文本前后的多个内容,而用“小时”替换“小时”等则超出了我的正则表达式技能水平。

任何帮助,将不胜感激。

谢谢。

编辑:

在搞砸之后,我想到了使用多个不同功能的解决方案。我不完全喜欢它,但是它可以工作。如果可能,我希望使用一个preg_replace解决方案。这是我目前的丑陋解决方案:

$testString = "This is text I don't care about | 7.3 seconds ago";
$testString = array_shift(array_reverse(explode('|', $testString)));
$pattern = array('/seconds/', '/minutes/', '/hours/', '/ago/');
$replace = array('secs', 'mins', 'hrs', '');
$testString = trim(preg_replace($pattern, $replace, $testString));

输出为: 7.3 secs

大卫·怀特

如果您确实想在一行中进行搜索/替换,则可以执行以下操作:

$time_map = array(
  'seconds' => 'secs',
  'minutes' => 'mins',
  'hours'   => 'hrs',
  'days'    => 'days',
);

$data = array(
    "Some text I don't care about | 2.3 seconds ago",
    "Some text I don't care about | 5.2 minutes ago",
    "Some text I don't care about | 7.0 hours ago",
    "Some text I don't care about | 1.9 days ago",
);

foreach ($data as $line) {
    $time_data = preg_replace_callback("/(.*|\s*)([0-9]+\.[0-9]+) (\w+) ago/",  function ($matches) use ($time_map) {return $matches[2] . " " . $time_map[$matches[3]];}, $line);
    print "$time_data\n";
}

产生:

2.3 secs
5.2 mins
7.0 hrs
1.9 days

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP preg_replace多个URL替换

来自分类Dev

PHP preg_replace替换太多

来自分类Dev

PHP preg_replace多个链接URL

来自分类Dev

PHP preg_replace多个单词

来自分类Dev

PHP preg_replace

来自分类Dev

使用php preg_replace替换最接近的匹配词

来自分类Dev

PHP-替换完全匹配的preg_replace

来自分类Dev

如何用preg_replace和PHP替换特殊字符?

来自分类Dev

将PHP preg_replace转换为Javascript替换

来自分类Dev

PHP preg_replace在不同的位置执行多次替换

来自分类Dev

PHP的preg_replace()函数不会替换所有行

来自分类Dev

PHP preg_replace不替换任何内容

来自分类Dev

PHP:用preg_replace错误地替换了HTML。

来自分类Dev

php preg_replace:替换每个出现的元素(不要分组)

来自分类Dev

php中的Preg_match / Preg_replace用于匹配模式并在php中替换它

来自分类Dev

php preg_replace用法-

来自分类Dev

PHP复杂preg_replace

来自分类Dev

PHP preg_replace HREF

来自分类Dev

PHP:preg_replace函数

来自分类Dev

PHP preg_replace HREF

来自分类Dev

PHP的条件preg_replace

来自分类Dev

php preg_match_all / preg_replace正在截断类似匹配项的替换

来自分类Dev

PHP Preg_replace()模式仅替换适当的文本,而不替换图像alt / src文本

来自分类Dev

如何用str_replace或preg_replace的php字符串替换单词

来自分类Dev

使用preg_replace和FOR循环替换PHP关键字

来自分类Dev

PHP preg_replace:不区分大小写的匹配和区分大小写的替换

来自分类Dev

PHP preg_replace。仅当CD前面没有“-”时,才用CD替换AB。

来自分类Dev

PHP preg_replace仅在特定子字符串之后才替换更多空格

来自分类Dev

PHP:带数组的preg_replace不会用连字符替换空格

Related 相关文章

热门标签

归档