首页 > 解决方案 > texfield 中的数字

问题描述

我有这个文本作为产品名称(示例):“Lego creator 10270 Car V1 cool”我只需要提取 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 have
     preg_match( '/ [\d]{' . $sku_digits . '} /', $product_name, $match );
     if ( $match ) {
         $sku = trim( $match[0] );
     }     
     return $sku;
}

但我发现,产品文本中的数字可以在 4-10 位之间。我需要提取数字并从数字的开头删除 0,如果它在那里。谢谢你的帮助

标签: phpfunctiontrimdata-extraction

解决方案


在它使用的原始代码中$sku_digits,这只是位数(它是{5}在正则表达式中制作的)。相反,您需要更改它{4,10}以指示您想要的字符数。

它还检查第一个数字是否为 0,如果它是 0,则仅删除该第一个数字。

我还将硬编码空格更改为\b单词边界,因此它将与紧随其后的 a 匹配,(如示例中所示)

function my_get_sku( $product_name = "" ) {
    $sku = 0;                       // if no SKU is found, return 0
    preg_match( '/\b[\d]{4,10}\b/', $product_name, $match );
    if ( $match ) {
        $sku = trim( $match[0] );
        if ( $sku[0] == '0' ){
            $sku = substr($sku, 1);
        }
    }
    return $sku;
}

echo my_get_sku("Lego 2 creator 0102704, Car V1 cool");

给出(它忽略了前面的 2,因为它太短了)

102704

推荐阅读