Bu gerçekten berbat regex bulunuyor. Ne tam olarak ulaşmak için çalışıyoruz? URL alanı eklemek istediğiniz http veya https ile başlamıyorsa eğer benziyor? Eğer öyleyse, biraz kapalı konum:
$string = preg_replace('/src=(\'|")?(?!htts?:)/i', 'src="http://domain.com/');
işareti çok yakın olmalıdır.
Bu regex ne yapar? Bu arar:
src=
- isteğe bağlı olarak, ya
'
ya da "
, ardından
- not
http:
ya da https:
, ardından
- duyarsız tüm yapılır vaka
Note: {?!...)
, bir negative lookahead denilen ve bir zero-width assertion bir örneğidir. "Sıfır genişliği" burada herhangi bir girdi tüketmez anlamına gelir. Bu durumda, "izlemediği ..." anlamına gelir.
Lütfen regex ne yapar? Bu arar:
src=
- bir or more
'
ya da "
karakter
- isn't herhangi bir
(http:|https:)
herhangi bir karakter (ki ne [^...]
araçları inşa)
- duyarsız tüm vaka
Note:
[^(http:|https:)]
eşdeğerdir:
[^():https]
bu karakterleri not biridir herhangi bir karakter anlamına gelir.