PHP:从json中提取ISBN的第一个实例?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (75)

我需要使用PHP从JSON中提取ISBN的第一个实例。我正在从库API中返回书籍记录,并且由于JSON输出的性质,书籍可以有10或13位数字的ISBN与之关联无论如何,我需要一种从字符串中提取13位数字的第一个实例的方法。数组并将其设置为等于变量。如果不存在13位数字,则查找一个10位数的ELSE“找不到ISBN”类型的东西。仅供参考:ISBN也可以从0开始,所以我需要保留它。任何想法如何实现这一目标?我正在使用for循环来输出记录

for($i=0; $i<count($res['entries']); $i++) 
 ...echo "<h4>Title: " . $res['entries'][$i]['bib']['title'] . "</h4>";
提问于
用户回答回答于
$str1 = 'isbn: 1234567890';
$str2 = 'isbn: 123-1234567890';
$str3 = 'isbn: 1234567890123';

//matches 3 digits, then a hyphen, then 10 digits OR
//matches 10 digits in a row
$regex = '/\d{3}-\d{10}|\d{10}/';

preg_match($regex, $str1, $result1);
preg_match($regex, $str2, $result2);
preg_match($regex, $str3, $result3);

var_dump($result1);
var_dump($result2);
var_dump($result3);

无论它被馈送什么线路,它将连续提取10位数字,如果存在-中间数字则提取13位数字。

扫码关注云+社区

领取腾讯云代金券