Php 如果在另一个字符的字符串的中间引导、结束或存在,则将0设为一个数字。

Php 如果在另一个字符的字符串的中间引导、结束或存在,则将0设为一个数字。,php,Php,需要前缀为0的“句子”示例: 5这是3变成05这是03 44这是2变为44这是02(注44未加前缀,因为它不是一个数字) 这4个是变成了这04个是 不带0前缀的“句子”示例: 44这是 22此3为(注释3未加前缀,因为它作为字符串的一部分存在) 这是5 我试着想出一个正则表达式,但失败得很惨; } } 说明: 我使用确保只有以下数字[0-9]: 后面没有数字:(?![0-9]) 并以空格或行首开头:((?$str='5这是3'; $replaced=preg_replace('

需要前缀为0的“句子”示例:

5这是3
变成
05这是03

44这是2
变为
44这是02
(注44未加前缀,因为它不是一个数字)

这4个是
变成了
这04个是


不带0前缀的“句子”示例:

44这是

22此3为
(注释3未加前缀,因为它作为字符串的一部分存在)

这是5


我试着想出一个正则表达式,但失败得很惨; } } 说明:

我使用确保只有以下数字
[0-9]

  • 后面没有数字:
    (?![0-9])
  • 并以空格或行首开头:
    ((?
    $str='5这是3';
    
    $replaced=preg_replace('~(?这里有一种非正则表达式的实现方法:

    $line = "this 4 is";
    
    $words = explode(' ', $line);
    foreach ($words as &$word) {
        if (ctype_digit($word)) {
            $word = str_pad($word, 2, '0', STR_PAD_LEFT);
        }
    }
    
    echo implode(' ', $words);
    

    有很多方法可以实现你想要的。但是,一个好的起点应该是你迄今为止所写的代码。天哪,伙计们,为什么你会选择一个对最琐碎的要求都不起作用的答案??“5这是3”你认为
    [$]
    是吗?它是一组字符集,由
    $
    符号和一个空格组成。是的,我认为这是行的开头或空格。目前正在尝试解决这个问题。甚至不接近这个问题。)什么是
    [\.]
    ?它是空格或“点”character@hek2mgl当前位置1.让它工作2.在stackoverflow上张贴“或当您很匆忙时”-----没有人要求你发布一些只是为了成为第一。实际上,发布一些cr*p只是为了成为第一,然后修改它是一个糟糕的想法。
    $str = '5 this is 3';
    
    $replaced = preg_replace('~(?<=\s|^)\d(?=\D|$)~', '0\\0', $str); // 05 this is 03
    
    $line = "this 4 is";
    
    $words = explode(' ', $line);
    foreach ($words as &$word) {
        if (ctype_digit($word)) {
            $word = str_pad($word, 2, '0', STR_PAD_LEFT);
        }
    }
    
    echo implode(' ', $words);