Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php preg替换数字_Php_String_Numbers_Preg Replace - Fatal编程技术网

php preg替换数字

php preg替换数字,php,string,numbers,preg-replace,Php,String,Numbers,Preg Replace,我正在尝试为脚本中的数字构建一个preg替换 让我们举一个例子: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer lobortis luctus scelerisque. Curabitur 3214567890 dignissim finibus felis, vitae vehicula ipsum vehicula a. Maecenas tincidunt et metus vitae eleifend

我正在尝试为脚本中的数字构建一个preg替换

让我们举一个例子:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Integer lobortis luctus scelerisque. Curabitur 3214567890 dignissim finibus felis,
vitae vehicula ipsum vehicula a. 
Maecenas tincidunt et metus vitae eleifend. Cras tellus eros, placerat 
https://www.facebook.com/groups/123456789123456789/
我必须找到一个数字,它写在一个文本源上,99%以3开头,有10个数字

我写了这个简单的preg___

preg_replace('/3[0-9]{6}([0-9]{3})/e', '"Number" . md5("$0") . " " . "["."$1"."]"', data)
因为我需要用md5替换那个数字,然后写最后3位数字

例如,如果我有3214567890,我需要

Number89467086c22e2cee9aae8dbf9c7f7453 [890]
preg_替换完成了工作,但有一个问题

几天前我发现的问题是,如果在源代码中我有一个与很多数字的链接,例如,一个facebook链接

https://www.facebook.com/groups/123456789123456789/
preg_replace也对其进行了详细阐述,并替换了该链接的编号,但我不需要触摸链接,我只需要转换分隔的编号


有人能帮我吗?

你可以使用单词边界
\b

'~\b3[0-9]{6}([0-9]{3})\b~'
或环顾四周
(?和
(?!\d)
(仅在未包含其他数字时匹配):


是否尝试添加\s?如果使用空格字符将所有数字与其他文本分隔开,这可能会起作用。它起作用,但我发现另一个问题:如果找到这样的链接,它将转换:确定,是否只匹配内部空白?使用
“~(?
'~(?<!\d)3[0-9]{6}([0-9]{3})(?!\d)~'
'~(?<!\S)3[0-9]{6}([0-9]{3})(?!\S)~'
preg_replace_callback('~(?<!\d)3[0-9]{6}([0-9]{3})(?!\d)~', function($m) {
     return 'Number' . md5($m[0]) . ' [' . $m[1] . ']';
   }, data);