Reputation: 181
Hi i'm facing problem with replacing base64 embedded image with simple pound chracter "#" and the string i have to replace is
src=\\"data:image/png;base64,Y6BkQWnG0Ywf4AiyACMYD4IAfhggAIuAD4wnHwaRNjXOOEHJsjAVnAwDlKhDFNUiCLoRCD2KZW45098i8a+miGXtKPkBdXQO4qZ9096Pmh1v3dytrxhsrR2tlzue1uJShr8JY0BSSMpasCL6/DiOr9YEZK1BKRKslSJyZToASVSpoTKlL5yJVKmDEgVVImCljY+tkxJy5RUaSMweEjLlJSMowmn51vryY2NVHI9uZFMpX765Wd/MGC19TF1E5t9wGpzmMx2g9Fq7xscHZsCOQ7pD2I4CcEooElGkLKVJhkBCE742fcBR5ikJiMwYVBC0WE6FAEOUqFAkA4EqDAZjuKhMOyPw4FPyeg3weXvsOhXTv+9MS95vbe/osVUVjX8TsP8kdNz7ypnpCf8JY1hsTIkaqQEDQG+PMCXUyIFVaIMlijJUiVRupUmyl9JE5qjCafnXOvJjbWNdRChfP/jD17I1+8YtNn7LVa7xWq32hwWa7/RZDOZ7YNDY7NzLlDvwHASQXFAExjBUIzYFiVbIcL4aShhghRwh2EKyGsASig6zNAkRISiRDhCUDQRjARCiVBsiY4s+ullmLiHB79y4zHj0EzLh7Z36x1v1y282+/gDFBCzgp0SQwoJBhAqikRAajyDxiC9OQzEKiviJSDAcppfo0J1g6AsieA8PfoUGv8HD97z+1XEXqXPMXegYrmtzfNAyeKhx5lCL82ALciANlDRNRC2YrMlXroQONsHlaWfQBHCEKGsmyjiacHq+lUylNlJJ0NOJxKL2/j4QmxiMZqutz2zp0xssjoERrw/1B0IYHsigBlN/zeBIRk3k1xvDSdDZYWIQhiYMUBiTFI3QFByikDCNhGk0EkIjISxK41E6EI/Q0UgoFIpQdDxALwap1QC9HKRXwrElOrJCRT6j4/f8sTuzCK5xzJ7rGK1qGz/cOnmweb60CZad9MtaaWlrUHoSL2+Bypo8pQqfVAGVNiIHmrCyZvxAc+Ct08HyU6SsmShR+kuUwdLmUNkpji4VCz6+1m78Fm6GAzzPV0OD3nYsbqV26vDo0MW2xWEJtYrPa+/oHJqTkEJQPBMNjHJIMm246lZUy1ZkQZjHconWT0g3egSSBI44EgHkhji6Rokko/f+v4bCgUCYUi8VAsSkUiwXAkFI3FEvHEUiSxGI4vLy0urSytLK+s3L6zent1+fad5ZW7S7fvLq18tnj786XVLxbvcDTh9FxrfSOVTKV+/OmX6Zm5waERs8WmN5j6+gcmp2bcHh8gBbOHAHvjkqd1gv9gmpBkIL2REghVNg0e0nSY3qQJTYfD4Wgk8gRNIpFYNBqPRuOgIht/kibx+GIslkgklhYXl5eWVpaWVpaXV1dWbt++fXdl5Tbbq6t3Vlc5mnB6vrWRTG0kU998+/34xBSYgjWaLP2OQafLg6A4aL4AlICx123bN+yyK0cTTpyeUyVTqfWN1Jf3vhoeGXMMDIHlOf2OQa8Pxgk/aL4wy3AATbbt3XA0WV298/8BwcTdoNx7r2kAAAAASUVORK5CYII=\\" alt=\\"\\"
and the code is
$pattern = '~data\:image\\\/[a-zA-Z]*\;base64\,[a-zA-Z0-9\+\/\\\=]*\=~';
$replacement = '#';
$count = 0;
$rep = preg_replace($pattern, $replacement, $data, -1, $count);
but nothing happens - the replacement count is 0;
In gskinner's regexp online http://regexr.com everything looks ok.
I use "~" beacuse PHP is yelling warninigs when i use "/".
Any help on that? Thanks!
Upvotes: 1
Views: 3432
Reputation: 626923
You have too many backslashes that way. E.g. \\\/
means a backslash + an escaped forward slash
.
This works alright with the ~
delimiter:
$re = "~data:image/[a-zA-Z]*;base64,[a-zA-Z0-9+/\\=]*=~";
$str = "src=\\\"data:image/png;base64,Y6BkQWnG0Ywf4AiyACMYD4IAfhggAIuAD4wnHwaRNjXOOEHJsjAVnAwDlKhDFNUiCLoRCD2KZW45098i8a+miGXtKPkBdXQO4qZ9096Pmh1v3dytrxhsrR2tlzue1uJShr8JY0BSSMpasCL6/DiOr9YEZK1BKRKslSJyZToASVSpoTKlL5yJVKmDEgVVImCljY+tkxJy5RUaSMweEjLlJSMowmn51vryY2NVHI9uZFMpX765Wd/MGC19TF1E5t9wGpzmMx2g9Fq7xscHZsCOQ7pD2I4CcEooElGkLKVJhkBCE742fcBR5ikJiMwYVBC0WE6FAEOUqFAkA4EqDAZjuKhMOyPw4FPyeg3weXvsOhXTv+9MS95vbe/osVUVjX8TsP8kdNz7ypnpCf8JY1hsTIkaqQEDQG+PMCXUyIFVaIMlijJUiVRupUmyl9JE5qjCafnXOvJjbWNdRChfP/jD17I1+8YtNn7LVa7xWq32hwWa7/RZDOZ7YNDY7NzLlDvwHASQXFAExjBUIzYFiVbIcL4aShhghRwh2EKyGsASig6zNAkRISiRDhCUDQRjARCiVBsiY4s+ullmLiHB79y4zHj0EzLh7Z36x1v1y282+/gDFBCzgp0SQwoJBhAqikRAajyDxiC9OQzEKiviJSDAcppfo0J1g6AsieA8PfoUGv8HD97z+1XEXqXPMXegYrmtzfNAyeKhx5lCL82ALciANlDRNRC2YrMlXroQONsHlaWfQBHCEKGsmyjiacHq+lUylNlJJ0NOJxKL2/j4QmxiMZqutz2zp0xssjoERrw/1B0IYHsigBlN/zeBIRk3k1xvDSdDZYWIQhiYMUBiTFI3QFByikDCNhGk0EkIjISxK41E6EI/Q0UgoFIpQdDxALwap1QC9HKRXwrElOrJCRT6j4/f8sTuzCK5xzJ7rGK1qGz/cOnmweb60CZad9MtaaWlrUHoSL2+Bypo8pQqfVAGVNiIHmrCyZvxAc+Ct08HyU6SsmShR+kuUwdLmUNkpji4VCz6+1m78Fm6GAzzPV0OD3nYsbqV26vDo0MW2xWEJtYrPa+/oHJqTkEJQPBMNjHJIMm246lZUy1ZkQZjHconWT0g3egSSBI44EgHkhji6Rokko/f+v4bCgUCYUi8VAsSkUiwXAkFI3FEvHEUiSxGI4vLy0urSytLK+s3L6zent1+fad5ZW7S7fvLq18tnj786XVLxbvcDTh9FxrfSOVTKV+/OmX6Zm5waERs8WmN5j6+gcmp2bcHh8gBbOHAHvjkqd1gv9gmpBkIL2REghVNg0e0nSY3qQJTYfD4Wgk8gRNIpFYNBqPRuOgIht/kibx+GIslkgklhYXl5eWVpaWVpaXV1dWbt++fXdl5Tbbq6t3Vlc5mnB6vrWRTG0kU998+/34xBSYgjWaLP2OQafLg6A4aL4AlICx123bN+yyK0cTTpyeUyVTqfWN1Jf3vhoeGXMMDIHlOf2OQa8Pxgk/aL4wy3AATbbt3XA0WV298/8BwcTdoNx7r2kAAAAASUVORK5CYII=\\\" alt=\\\"\\\"";
$subst = "#";
echo preg_replace($re, $subst, $str);
Result of the sample program:
src=\"#\" alt=\"\"
Upvotes: 2