How to extract text in php using regex

My text:

12a49803-713c-4204-a8e6-248e554a352d_ Content-Type: text/plain; charset="iso-8859-6" Content-Transfer-Encoding: base64 DQrn0Ocg0dPH5MkgyszR6sjqySDl5iDH5OfoyuXq5A0KDQrH5OTaySDH5NnRyOrJIOXP2ejlySAx MDAlDQogCQkgCSAgIAkJICA= --_12a49803-713c-4204-a8e6-248e554a352d_ Content-Type: text/html; charset="iso-8859-6" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxzdHlsZT48IS0tDQouaG1tZXNzYWdlIFANCnsNCm1hcmdpbjowcHg7 

I want to extract iso-8859-6

+6
source share
3 answers

you could do: preg_match('/charset="([^"]+)"/',$string,$m); echo $m[1];


Edit: in case all necessary mappings (called from another answer) are changed as follows:

preg_match_all('/charset="([^"]+)"/',$string,$m); print_r($m);

+15
source

The regular expression you are looking for is:

 iso[^"]+ 

Required php code:

 <?php $subject='12a49803-713c-4204-a8e6-248e554a352d_ Content-Type: text/plain; charset="iso-8859-6" Content-Transfer-Encoding: base64 DQrn0Ocg0dPH5MkgyszR6sjqySDl5iDH5OfoyuXq5A0KDQrH5OTaySDH5NnRyOrJIOXP2ejlySAx MDAlDQogCQkgCSAgIAkJICA= --_12a49803-713c-4204-a8e6-248e554a352d_ Content-Type: text/html; charset="iso-8859-6" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxzdHlsZT48IS0tDQouaG1tZXNzYWdlIFANCnsNCm1hcmdpbjowcHg7'; $pattern='/iso[^"]+/m'; if (preg_match($pattern, $subject, $match)) echo $match[0]; ?> 

Conclusion:

 iso-8859-6 
+1
source

if you are interested in getting both matches (since you have 2 in the string) and repeat them, you should do something like this. I also used single quotes so as not to hide quotes inside the regular expression. In addition, the proposals of the units were used.

 preg_match_all('/charset="([^"]+)"/', $subject, $result, PREG_PATTERN_ORDER); for ($i = 0; $i < count($result[0]); $i++) { # Matched text = $result[0][$i]; } 
0
source

Source: https://habr.com/ru/post/885465/


All Articles