PHP提取字符串中括号内SKU值的内联代码问题
解决方案:提取产品描述括号内的SKU
优先内联PHP实现
方法1:用strpos+substr(精确控制截取范围)
你之前的问题大概率是没指定右括号的查找起始位置,或者计算截取长度时出错。试试这段内联代码,记得把{product_description}替换成插件里对应产品描述的字段占位符:
<?php $desc = '{product_description}'; // 定位左括号位置 $left_bracket = strpos($desc, '('); // 从左括号位置开始找右括号,避免匹配前面无关的右括号 $right_bracket = strpos($desc, ')', $left_bracket); // 确保两个括号都存在,再截取并去除首尾空格 $sku = ($left_bracket !== false && $right_bracket !== false) ? trim(substr($desc, $left_bracket + 1, $right_bracket - $left_bracket - 1)) : ''; echo $sku; ?>
方法2:正则表达式(更简洁的内联写法)
如果产品描述里只有一组括号包裹SKU,用正则会更省心,一行就能搞定:
<?php preg_match('/\((.*?)\)/', '{product_description}', $matches); echo isset($matches[1]) ? trim($matches[1]) : ''; ?>
.*?是非贪婪匹配,只会取第一个括号内的内容,刚好对应单个SKU的场景
插件函数区备选方案
如果内联代码太长或者需要复用,可在插件的自定义函数区添加以下函数:
function get_sku_from_description($description) { // 用正则匹配括号内内容 preg_match('/\((.*?)\)/', $description, $matches); return isset($matches[1]) ? trim($matches[1]) : ''; }
然后在导入时的内联调用:
<?php echo get_sku_from_description('{product_description}'); ?>
内容的提问来源于stack exchange,提问作者chris
相关产品推荐
相关产品推荐

