PDF元数据的PHP RegExp


PHP RegExp for PDF Metadata

我被一块RegExp卡住了,在PDF上嵌入的元数据标签中检索PDF的页数。

元数据看起来像这样:<</Metadata 1 0 R/Pages 5 0 R/Type/Catalog>>

我需要<</Metadata之后的第一个数字,在这种情况下是1,但是,根据页数,它可以是100。

我已经尝试与(?=metadata).*(?=r'/pages)之间的字符串匹配,但是,如果在某些PDF格式中失败,由于结束(pages)字符串。

您的regex匹配了太多以metadata开始但不包括r/pages的文本,因为您在开头和结尾都有积极的前瞻性。

您需要使用与数字匹配的'd速记字符类(或其等效的[0-9]字符类)。要匹配<<'/Metadata之后的第一个整数,您可以使用向后查找,或者对数字模式使用捕获组:

(?<=<<'/Metadata's)'d+

看演示。或者将这个与捕获组一起使用(如果空白符号的数量可能多于一个,则更可取):

<<'/Metadata's+('d+)