如何获得包含13个以上要排除的数字的EAN(PHP)

如何获得包含13个以上要排除的数字的EAN(PHP),php,Php,我为一个网站制作了这个脚本,它基本上与供应商同步。现在我的问题是,供应商开始为每个产品提供多个EAN。我需要让脚本检查产品是否有超过1个ean一个ean包含13个数字,如果它有超过13个数字,它只需要ean的前13位数字。我找不到任何解决办法 更新发布元数据$id、'U sku'、$ean; 更新发布元数据$id,$productcode',$bfc; 更新_post _meta$id、_stock、$qty; 更新“\u post\u meta$id”、“价格”、“售价”; 更新“\u pos

我为一个网站制作了这个脚本,它基本上与供应商同步。现在我的问题是,供应商开始为每个产品提供多个EAN。我需要让脚本检查产品是否有超过1个ean一个ean包含13个数字,如果它有超过13个数字,它只需要ean的前13位数字。我找不到任何解决办法

更新发布元数据$id、'U sku'、$ean; 更新发布元数据$id,$productcode',$bfc; 更新_post _meta$id、_stock、$qty; 更新“\u post\u meta$id”、“价格”、“售价”; 更新“\u post\u meta$id”、“常规价格”、“售价”; wp_untrash_post$id; 更新发布元$id,“可更改同步”,1; 如果$qty>0{ 更新“发布元$id”、“库存状态”、“库存”; }否则{ 更新'u post'u meta$id','u stock'u status','outofstock'; } 如果$ean==>13{ }
要检查EAN是否大于等于13个字符,请使用strlen,对于前13个字符,请使用preg_match和regexp表达式\d{13}


为了避免对数据库的双重写入,首先检查$ean是否长于13位字符,如果是,则将其截断为13位,然后将其存储在数据库中

if(strlen($ean) > 13){
   //is longer than 13
   $ean = substr($ean, 0, 13); //truncate to 13 chars
}
update_post_meta( $id, '_sku', $ean);
update_post_meta( $id, 'productcode', $bfc);

//the rest of your code

或者改为一行:$ean=strlen$ean>13?substr$ean,0,13:$ean


我假设您的$ean是字符串或整数类型,等于或小于PHP_INT_MAX

,不幸的是,这似乎不起作用。。我试着应用这个,但没有成功。似乎它现在没有执行脚本您的$ean是什么数据类型?我的脚本片段可以很好地处理字符串。它是一个字符串,但可能我在代码中写错了。这就是它现在的样子:我需要它来检测供应商给出的ean是否超过13个数字,如果这是真的,那么它会排除13个数字之后的所有数字,并为它发现的超过13个数字的特定产品保留特定的产品ean号。。如果这有意义的话,您没有将reg exp分配给变量。请参见我的示例中的$matches。它是一个数组,所有regexp匹配项都按in/\d{13}/'分组。在这个例子中,你只有一个值在$匹配(0)。@ AlessioFlorio,如果它为你工作,请考虑把我的答案标记为接受的绿色复选标记左侧的不幸,它不起作用,是不是EAN不是一个字符串?包含多个的EAN如下所示:3274872320161、3274872366053、3274872383753、3274872300477、3274872268029。它们都有逗号。以这些为例:你知道它可能是什么吗?一旦它起作用,我将向上投票:外观与类型无关。如果它是字符串或整数,就像我的答案一样,它会工作。var_转储的$ean是什么;回来