I'd like to extract multiple strings from a larger string.
The following is an error returned from the Google AdWords API. This particular example has two quoted instances following trigger:
, but there could be several.
What would be the best way of extracting x amount of quoted instances from the larger string and saving them in an array?
Is there a PHP function available or should I use implode and a loop?
Any ideas would be appreciated, I'm happy to hack away at the code, just need some pointers.
Many thanks
AdGroup update failed: [AdGroupServiceError.DUPLICATE_ADGROUP_NAME @ operations[6].operand.name; trigger:'prince2 training west yorkshire', AdGroupServiceError.DUPLICATE_ADGROUP_NAME @ operations[8].operand.name; trigger:'prince ii training and exam']
This is how you can do
$str = "AdGroup update failed: [AdGroupServiceError.DUPLICATE_ADGROUP_NAME @ operations[6].operand.name; trigger:'prince2 training west yorkshire', AdGroupServiceError.DUPLICATE_ADGROUP_NAME @ operations[8].operand.name; trigger:'prince ii training and exam']";
preg_match_all("/'(.*?)'/im",$str,$match);
print_r($match[1]);
More specifically if its always after trigger:
you can use the following
preg_match_all("/trigger:'(.*?)'/im",$str,$match);
Output ::
Array
(
[0] => prince2 training west yorkshire
[1] => prince ii training and exam
)
Explanation
/'(.*?)'/im
' matches the character ' literally
1st Capturing group (.*?)
.*? matches any character (except newline)
Quantifier: Between zero and unlimited times, as few times as possible, expanding as needed [lazy]
' matches the character ' literally
i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])
m modifier: multi-line. Causes ^ and $ to match the begin/end of each line (not only begin/end of strin