Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 正则表达式帮助-提取文本_Php_Regex - Fatal编程技术网

Php 正则表达式帮助-提取文本

Php 正则表达式帮助-提取文本,php,regex,Php,Regex,我有3个单独的字符串: $d = 'Created on November 25, 2009'; $v = 'Viewed 17,603 times'; $h = '1,200 hits'; 需要转换为: $d1={2009年11月25日的unix时间戳} $v1=“17603”(如果存在,则去掉逗号) $h1=“1200”(如果存在,则去掉逗号) 最有效的方法是什么(可能是使用regex)?任何代码片段都很好 对于第一个: $d_stripped = str_ireplace("Create

我有3个单独的字符串:

$d = 'Created on November 25, 2009';
$v = 'Viewed 17,603 times';
$h = '1,200 hits';
需要转换为:

$d1=
{2009年11月25日的unix时间戳}

$v1=“17603”(如果存在,则去掉逗号)

$h1=“1200”(如果存在,则去掉逗号)

最有效的方法是什么(可能是使用regex)?任何代码片段都很好

对于第一个:

$d_stripped = str_ireplace("Created on ", null, $d);
$created = strtotime($d_stripped);
对于第二个和第三个问题,比我更精通正则表达式的人肯定会提供一个很好的解决方案。

对于第一个问题:

$d_stripped = str_ireplace("Created on ", null, $d);
$created = strtotime($d_stripped);

对于第二个和第三个问题,比我更精通正则表达式的人肯定会提供一个很好的解决方案。

编辑:是的,这并不太难

$d = 'Created on November 25, 2009';
$v = 'Viewed 17,603 times';
$h = '1,200 hits';

$d1 = strtotime( str_replace( 'Created On ', '', $d ) );
$v1 = str_replace( ',', '', preg_replace( '/[a-zA-Z\s]+([0-9,]+)[a-zA-Z ]+/', '$1', $v ) );
$h1 = str_replace( ',', '', preg_replace( '/([0-9,]+)[a-zA-Z ]+/', '$1', $h ) );

编辑:是的,这不太难

$d = 'Created on November 25, 2009';
$v = 'Viewed 17,603 times';
$h = '1,200 hits';

$d1 = strtotime( str_replace( 'Created On ', '', $d ) );
$v1 = str_replace( ',', '', preg_replace( '/[a-zA-Z\s]+([0-9,]+)[a-zA-Z ]+/', '$1', $v ) );
$h1 = str_replace( ',', '', preg_replace( '/([0-9,]+)[a-zA-Z ]+/', '$1', $h ) );

使用克里的解决方案和str_替换。短的,可维护的

你可以用正则表达式去掉逗号,但是如果你不能写它,你将如何修复它

您可能没有逗号(小于1000的数字)、一个逗号(1000-999999)、两个逗号(1000000-99999999)。。然后您可以使用如下表达式:

$v = 'Viewed 17,603 times'; $h = '1,200 hits'; $pattern = '/(\d+)[,]*(\d*)[,]*(\d*)/'; $replacement = '${1}${2}${3}'; echo preg_replace($pattern, $replacement, $v); echo preg_replace($pattern, $replacement, $h); $v=‘浏览17603次’; $h=‘1200次点击’; $pattern='/(\d+[,]*(\d*)[,]*(\d*)/'; $replacement='${1}${2}${3}'; echo preg_replace($pattern,$replacement,$v); echo preg_replace($pattern,$replacement,$h);
使用克里的解决方案和str_替换。短的,可维护的

你可以用正则表达式去掉逗号,但是如果你不能写它,你将如何修复它

您可能没有逗号(小于1000的数字)、一个逗号(1000-999999)、两个逗号(1000000-99999999)。。然后您可以使用如下表达式:

$v = 'Viewed 17,603 times'; $h = '1,200 hits'; $pattern = '/(\d+)[,]*(\d*)[,]*(\d*)/'; $replacement = '${1}${2}${3}'; echo preg_replace($pattern, $replacement, $v); echo preg_replace($pattern, $replacement, $h); $v=‘浏览17603次’; $h=‘1200次点击’; $pattern='/(\d+[,]*(\d*)[,]*(\d*)/'; $replacement='${1}${2}${3}'; echo preg_replace($pattern,$replacement,$v); echo preg_replace($pattern,$replacement,$h);