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.