尝试使用 SQL 中的 PHP 将 SKU 编号从 55A_3 修复为 A55_3
Trying to fix SKU numbers from 55A_3 to A55_3 with PHP in SQL
我已将 SKU 编号从 CSV 文件导入到 SQL 数据库中。
模式看起来像:
55A_3
345W_1+04B_1
128T_2+167T_2+113T_8+115T_8
我正在尝试移动数字前面的所有字母。
喜欢:
A55_3
W345_1+B04_1
T128_2+T167_2+T113_8+T115_8
我最好的想法是搜索 345W 等,然后将其替换为 W345 等:
$sku = "345W_1+04B_1";
$B_range_num = range(0,400);
$B_range_let = range("A","Z");
然后生成查找和替换数组
$B_find =
$B_replace =
也许只是使用 str_replace??
$res = str_replace($B_find,$B_replace,$sku);
结果应适用于所有 SKU 编号
W345_1+B04_1
有什么想法吗?
这里我定义了一个方法,格式不限长度。
$str = '128T_2+167T_2+113T_8+115T_8';
echo convertProductSku($str);
function convertProductSku($str) {
$arr = [];
$parts = explode('+', $str);
foreach ($parts as $part) {
list($first, $second) = array_pad(explode('_', $part), 2, null);
$letter = substr($first, -1);
$number = substr($first, 0, -1);
$arr[] = $letter . $number . ($second ? '_' . $second : '');
}
return implode('+', $arr);
}
您可以使用 preg_replace
来完成这项工作,查找一些数字,后跟一个字母和一个 _
带数字,一个 +
或字符串结尾,然后交换数字和字母的顺序:
$skus = array('55A_3',
'345W_1+04B_1',
'128T_2+167T_2+113T_8+115T_8',
'55A');
foreach ($skus as &$sku) {
$sku = preg_replace('/(\d+)([A-Z]+)(?=_\d+|\+|$)/', '', $sku);
}
print_r($skus);
输出:
Array
(
[0] => A55_3
[1] => W345_1+B04_1
[2] => T128_2+T167_2+T113_8+T115_8
[3] => A55
)
我已将 SKU 编号从 CSV 文件导入到 SQL 数据库中。 模式看起来像:
55A_3
345W_1+04B_1
128T_2+167T_2+113T_8+115T_8
我正在尝试移动数字前面的所有字母。 喜欢:
A55_3
W345_1+B04_1
T128_2+T167_2+T113_8+T115_8
我最好的想法是搜索 345W 等,然后将其替换为 W345 等:
$sku = "345W_1+04B_1";
$B_range_num = range(0,400);
$B_range_let = range("A","Z");
然后生成查找和替换数组
$B_find =
$B_replace =
也许只是使用 str_replace??
$res = str_replace($B_find,$B_replace,$sku);
结果应适用于所有 SKU 编号
W345_1+B04_1
有什么想法吗?
这里我定义了一个方法,格式不限长度。
$str = '128T_2+167T_2+113T_8+115T_8';
echo convertProductSku($str);
function convertProductSku($str) {
$arr = [];
$parts = explode('+', $str);
foreach ($parts as $part) {
list($first, $second) = array_pad(explode('_', $part), 2, null);
$letter = substr($first, -1);
$number = substr($first, 0, -1);
$arr[] = $letter . $number . ($second ? '_' . $second : '');
}
return implode('+', $arr);
}
您可以使用 preg_replace
来完成这项工作,查找一些数字,后跟一个字母和一个 _
带数字,一个 +
或字符串结尾,然后交换数字和字母的顺序:
$skus = array('55A_3',
'345W_1+04B_1',
'128T_2+167T_2+113T_8+115T_8',
'55A');
foreach ($skus as &$sku) {
$sku = preg_replace('/(\d+)([A-Z]+)(?=_\d+|\+|$)/', '', $sku);
}
print_r($skus);
输出:
Array
(
[0] => A55_3
[1] => W345_1+B04_1
[2] => T128_2+T167_2+T113_8+T115_8
[3] => A55
)