任何人都知道为什么这不会返回值?
Example $item2['data'] where it = UPC
//===================================================//
Author: Bob Smith Orig. Published: December 12, 1980
Format: Softcover UPC: 5960605543-04811 Price: $6.99
//======================================================//
Example $item2['data'] where it = ISBN
//======================================================//
Author: Jane Smith Orig. Published: December 1, 1985
Format: Hardcover ISBN #: 978-0-7851-5773-1 Price: $26.99
//======================================================//
The Code
//======================================================//
$find_stockcode = $item2['data'];
$pos = strpos($find_stockcode, "ISBN");
if ($pos === false)
{
$pos = strpos ($find_stockcode, "UPC");
if($pos === false)
{
$arr = str_split('ABCDEFGHIJKLMNOP0123456789');
shuffle($arr);
$arr = array_slice($arr, 0, 16);
$str = implode('', $arr);
$stock_num = $str;
} else {
$stock_num = substr($pos, 5, 16);}
} else {
$stock_num = substr($pos, 8,16); }
$upc = $stock_num;
如果$ find_stockcode返回UPC,那么$ upc应为:5960605543-04811
如果$ find_stockcode返回ISBN,则$ upc应为:978-0-7851-5773-1
如果$ find_stockcode找不到UPC或ISBN,那么$ upc应该是一个随机的16位数字字符串。
答案 0 :(得分:0)
我相信你在这里尝试做的最好的方法是正则表达式。
对于您的具体任务,应该这样做:
$number = preg_match("/((UPC)|(ISBN))[^0-9-]+([0-9-]+)/", $input, $fields);
if (count($fields) > 1) {
$upc = $fields[4];
} else {
$arr = str_split('ABCDEFGHIJKLMNOP0123456789');
shuffle($arr);
$arr = array_slice($arr, 0, 16);
$upc = implode('', $arr);
}
如果您想知道找到了哪个号码,请使用$ fields [1]。
祝你好运答案 1 :(得分:0)
唯一的原因,这可能发生,如果$ pos中没有足够的字符,substr返回false或“”。如果$ pos中包含“UPC”或“ISBN”,你确定$ pos包含足够的字符吗?