如何使用php获取引号括起来的文本

So I have a pretty large dump file that I have to extract specific content from it. The file has record each containing specific numbers enclosed by ". Bellow is a sample part of the file:

Ali Rabi (CustomerId=["3453456"]) // need to get: 3453456
Mohammad Reza Saberi (CustomerId=["12328"]) // need to get: 12328

Currently I read line by line and get the IDs as bellow. the code works fine and I get the result I want:

$cid = substr($row, strpos($row, '[') +2, strpos($row, ']')-strpos($row, '[')-2);
echo $cid;

But doesn't PHP have a function for this? getting the string enclosed by some delimiters?

If all your records look like the ones you've mentioned, I think it's the perfect place where you could use regular expressions.

Regular Expressions help you to create and find patterns in a given String.

For your case, you could probably use :

if (preg_match("/[0-9]+/", "Ali Rabi (CustomerId=[\"3453456\"])", $matches)) {
  echo "Match was found <br />";
  echo $matches[0];
}

The preg_match() function helps you to find the matches. The first param for this function is the pattern you're looking for. In your case you're looking for a set of continuous digits each of which can range from 0-9.

So, for a single digit we use [0-9]. Adding a + after [0-9] means that there needs to be atleast one digit in the match. Hence, [0-9]+ as the regular expression.

Read more about regular expressions in php : http://webcheatsheet.com/php/regular_expressions.php

I think you can use str_replace to remove the "

$cid = str_replace('"','',$row);

Try:

<?php preg_match_all("/([1-9]+)/",$yourtext, $result, PREG_PATTERN_ORDER); ?> 

$result contains all Matches. Further Infomartion: http://php.net/manual/de/function.preg-match-all.php