Php texfield中的数字
我将此文本作为产品名称(示例): “乐高创造者10270汽车V1酷” 我只需要提取10270。为此,我有以下php函数:Php texfield中的数字,php,function,trim,data-extraction,Php,Function,Trim,Data Extraction,我将此文本作为产品名称(示例): “乐高创造者10270汽车V1酷” 我只需要提取10270。为此,我有以下php函数: function my_get_sku( $product_name = "" ) { $sku = 0; // if no SKU is found, return 0 $sku_digits = 5; // change this to the number of digits the SKUs ha
function my_get_sku( $product_name = "" ) {
$sku = 0; // if no SKU is found, return 0
$sku_digits = 5; // change this to the number of digits the SKUs have
preg_match( '/ [\d]{' . $sku_digits . '} /', $product_name, $match );
if ( $match ) {
$sku = trim( $match[0] );
}
return $sku;
}
但我发现,产品文本中的数字可以在4-10位之间。我需要提取数字并从数字的开头删除0(如果有)。
感谢您的帮助这实际上很容易修复,请使用正则表达式
\d+
获取与1个或多个数字的匹配:
<?php
function my_get_sku($product_name)
{
if (empty($product_name))
return 0;
preg_match('/\d+/', $product_name, $match);
if ($match !== false)
return +$match[0]; // + will remove leading 0
return 0;
}
echo my_get_sku('Lego creator 010270 Car V1 cool');
这实际上很容易修复,请使用正则表达式\d+
获取与1个或多个数字的匹配:
<?php
function my_get_sku($product_name)
{
if (empty($product_name))
return 0;
preg_match('/\d+/', $product_name, $match);
if ($match !== false)
return +$match[0]; // + will remove leading 0
return 0;
}
echo my_get_sku('Lego creator 010270 Car V1 cool');
在原始代码中,它使用了$sku_digits
,这只是位数(它在正则表达式中被制成{5}
)。相反,您需要将其更改为{4,10}
,以指示所需的字符数
它还检查第一个数字是否为0,如果为0,则仅删除第一个数字
我还将硬编码空格更改为\b
,这是一个单词边界,因此它将与紧跟其后的,
匹配(如示例中所示)
给出(忽略前面的2,因为它太短)
在原始代码中,它使用了$sku_digits
,这只是位数(它在正则表达式中变成了{5}
)。相反,您需要将其更改为{4,10}
,以指示所需的字符数
它还检查第一个数字是否为0,如果为0,则仅删除第一个数字
我还将硬编码空格更改为\b
,这是一个单词边界,因此它将与紧跟其后的,
匹配(如示例中所示)
给出(忽略前面的2,因为它太短)
如果其中一个答案有所帮助,请考虑将其标记为接受-如果其中一个答案有所帮助,请考虑将其标记为“接受”。
102704