'de negatif görünüm ve açgözlü niceleyiciler Herhangi bir URL'yi bulmak ve buna göre bağlantı kurmak için bir regex kullanıyorum. Bununla birlikte, zaten bağlantılı olan tüm URL'leri tek seferde vermek istemiyorum. Bu yüzden, URL'nin bir href'in daha önce bulunup bulunmadığını görmek için lookbehind kullanıyorum. Ancak bu, başarısız olur çünkü değişken uzunluk ölçücülerine göz atmaya ve PHP'ye yönelik görünümüne izin verilmez.php
/\b(?<!href\s*=\s*[\'\"])((?:http:\/\/|www\.)\S*?)(?=\s|$)/i
Bu soruna en iyi yolu nedir:
İşte maç için düzenli ifade var?
DÜZENLEME:
Bunu test etmek için henüz var, ama tek bir regex bunu yapmaya hile PCRE tarafından desteklenen regex, içinde koşullu ifadeler kullanıldığını düşünüyorum. Böyle bir şey olacaktır:
/(href\s*=\s*[\'\"])?(?(1)^|)((?:http:\/\/|www\.)\w[\w\d\.\/]*)(?=\s|$)/i
kilit noktası href yakalanır ise, maç nedeniyle derhal eşleşmiyor garantilidir şartlı (?(1)^|)
, dışarı atılır olmasıdır. Muhtemelen bir sorun var. Yarın test edeceğim. URL ">
sona olmamasını sağlamak:
Bir HTML ayrıştırıcısı kullanın ve yalnızca bir metin düğümü olduğunda bunu belirtin mi? – kennytm
Bu muhtemelen en iyi çözümdür. Regex'i ayarlamanın bir yolu var mıydı diye merak ettim. –
+1 güzel soru. – NikiC