php - 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,如果它在那里。谢谢你的帮助
解决方案
在它使用的原始代码中$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
推荐阅读
- c++11 - std::mutex 属于哪个库?
- ios - 通过排名失败在firebase中获取数据?
- python - 谷歌拟合数据未使用 python 检索
- c++ - 如何在 C++ 中将 LPCTSTR 转换为 std::string
- angular - ./node_modules/@angular/core/fesm5/core.js 中的错误
- python - 运行此练习时,Matplotlib 冻结/崩溃
- python-3.x - mongodb:python返回字段(如果存在)
- keras - 验证损失/准确性总是在 LSTM 中达到某个阈值
- mockito - 测试用例没有得到被测方法抛出的异常
- python - Plotly - 更改子图的顺序