<?php
$test = <<<TEST
/* Double quotes */
function("some string"); // Match: some string
function("some \"string\""); // Match: some "string"
function("some 'string'"); // Match: some 'string'
/* Single quotes */
function('some string'); // Match: some string
function('some \'string\''); // Match: some 'string'
function('some "string"'); // Match: some "string"
Function can also accept parameters after string, so it also needs to match this cases:
/* Additional parameters */
function("some string", "param"); // Match: some string
function("some string", $param); // Match: some string
TEST;
preg_match_all('#\\(\\s*("((\\\\.|[^"])+)"|\'((\\\\.|[^\'])+)\'),?#s', $test, $matches);
PD9waHAKCiR0ZXN0ID0gPDw8VEVTVAovKiBEb3VibGUgcXVvdGVzICovCmZ1bmN0aW9uKCJzb21lIHN0cmluZyIpOyAvLyBNYXRjaDogc29tZSBzdHJpbmcKZnVuY3Rpb24oInNvbWUgXCJzdHJpbmdcIiIpOyAvLyBNYXRjaDogc29tZSAic3RyaW5nIgpmdW5jdGlvbigic29tZSAnc3RyaW5nJyIpOyAvLyBNYXRjaDogc29tZSAnc3RyaW5nJwoKLyogU2luZ2xlIHF1b3RlcyAqLwpmdW5jdGlvbignc29tZSBzdHJpbmcnKTsgLy8gTWF0Y2g6IHNvbWUgc3RyaW5nCmZ1bmN0aW9uKCdzb21lIFwnc3RyaW5nXCcnKTsgLy8gTWF0Y2g6IHNvbWUgJ3N0cmluZycKZnVuY3Rpb24oJ3NvbWUgInN0cmluZyInKTsgLy8gTWF0Y2g6IHNvbWUgInN0cmluZyIKCkZ1bmN0aW9uIGNhbiBhbHNvIGFjY2VwdCBwYXJhbWV0ZXJzIGFmdGVyIHN0cmluZywgc28gaXQgYWxzbyBuZWVkcyB0byBtYXRjaCB0aGlzIGNhc2VzOgoKLyogQWRkaXRpb25hbCBwYXJhbWV0ZXJzICovCmZ1bmN0aW9uKCJzb21lIHN0cmluZyIsICJwYXJhbSIpOyAvLyBNYXRjaDogc29tZSBzdHJpbmcKZnVuY3Rpb24oInNvbWUgc3RyaW5nIiwgJHBhcmFtKTsgLy8gTWF0Y2g6IHNvbWUgc3RyaW5nClRFU1Q7CnByZWdfbWF0Y2hfYWxsKCcjXFwoXFxzKigiKChcXFxcLnxbXiJdKSspInxcJygoXFxcXC58W15cJ10pKylcJyksPyNzJywgJHRlc3QsICRtYXRjaGVzKTsKdmFyX2R1bXAoJG1hdGNoZXNbMV0pOw==