How to alter the snippet below to fetch the first and second value in between the delimeters?
Output Example: First value: 9100450 and second value: HHkk based on the searchfor value: 12348888
$input = '0123456|BHKAHHHHkjkjkjkjk|12345678|JuiKKK121255
9100450|HHkk|12348888|JuiKKK10000000021sdadad255';
$searchfor = '12348888';
$regexp = "/(?<=" . $searchfor . "\\|)\\w /m";
$result = preg_match_all($regexp, $input, $matches);
print_r($matches);
CodePudding user response:
You can use
$regexp = "/^([^|] )\|([^|] )\|" . $searchfor . "\|/m";
See the PHP demo and the regex demo. Details:
^- (here, due tom) start of a line([^|] )- Group 1: any one or more chars other than a|char\|- a|char([^|] )- Group 2: any one or more chars other than a|char\|- a|char12348888- some hard-coded value\|- a|char.
If your $searchfor value can contain special chars, replace $searchfor with preg_quote($searchfor, '/') in the code.
See a PHP demo:
$input = '0123456|BHKAHHHHkjkjkjkjk|12345678|JuiKKK121255
9100450|HHkk|12348888|JuiKKK10000000021sdadad255';
$searchfor = '12348888';
$regexp = "/^([^|] )\|([^|] )\|" . $searchfor . "\|/m";
if (preg_match($regexp, $input, $match)) {
$val1 = $match[1];
$val2 = $match[2];
echo "$val1\n$val2";
}
