使用PHP中的正则表达式从字符串中获取值

时间:2018-02-20 10:46:00

标签: php regex

我只是想从本地pdf文件中获取页数。 我将pdf转换为字符串并尝试从中获取页码。 我尝试使用正则表达式。但我无法完善它。 所以请帮忙。

以下是字符串文字

 object(setasign\Fpdi\PdfParser\Type\PdfDictionary)#2728 (1) { ["value"]=> 
 array(3) { ["Size"]=> object(setasign\Fpdi\PdfParser\Type\PdfNumeric)#2726 
 (1) { ["value"]=> int(3028) } ["Root"]=> 
object(setasign\Fpdi\PdfParser\Type\PdfIndirectObjectReference)#2725 (2) { 
["generationNumber"]=> int(0) ["value"]=> int(3027) } ["Info"]=> 
object(setasign\Fpdi\PdfParser\Type\PdfIndirectObjectReference)#2731 (2) { 
["generationNumber"]=> int(0) ["value"]=> int(3026) } } } } } } 
["objects":protected]=> array(0) { } } 
  

[ “PAGECOUNT”:保护] => INT(96)

["pages":protected]=> array(0) { } } } ["currentReaderId":protected]=> 
string(71) 
"C:\xampp\files\journals\2\articles\13\submission\mergedpdf\allFiles.pdf" 
["importedPages":protected]=> array(0) { } ["objectMap":protected]=> 
 array(0) { } ["objectsToCopy":protected]=> array(1) { ["C:\xampp\files\journals\2\articles\13\submission\mergedpdf\allFiles.pdf"]=> 
array(0) { } } }

我需要使用regularexpression在blockquote中显示pageCount。 下面的正则表达式代码:

    ob_start();
    var_dump($pdf);//this was an object so i converted it to string for pattern matching.
    $result = ob_get_clean();//shows the result in string.
    $subject = "pageCount";
    $pattern = '/^pageCount/';//pattern to match to get page count
    preg_match($pattern, substr($subject,20), $matches, PREG_OFFSET_CAPTURE);

的print_r($匹配);

2 个答案:

答案 0 :(得分:1)

您可以使用库提供的method,例如:

$filename = 'some-file.pdf';

require_once('library/SetaPDF/Autoload.php');
// or if you use composer require_once('vendor/autoload.php');

$document = SetaPDF_Core_Document::loadByFilename($filename);

$pages = $document->getCatalog()->getPages();
$pageCount = $pages->count();
echo $pageCount;

答案 1 :(得分:0)

我宁愿遍历给定的对象而不是使用正则表达式从中获取值。

但是,如果你真正需要的是你的正则表达式:\["pageCount":protected\]=> int\(\d*\)

你可以在这里测试一下:

https://regex101.com/r/RyGMwb/2