Negatif Geriye bakan ve php açgözlü nicelik

0 Cevap php

I'm using a regex to find any URLs and link them accordingly. However, I do not want to linkify any URLs that are already linked so I'm using lookbehind to see if the URL has an href before it. This fails though because variable length quantifiers aren't allowed in lookahead and lookbehind for PHP.

İşte maç için regex bulunuyor:

/\b(?<!href\s*=\s*[\'\"])((?:http:\/\/|www\.)\S*?)(?=\s|$)/i

Bu soruna en iyi yolu nedir?

EDIT:

Bunu test etmek için henüz, ama ben bir tek regex yapıyor için hile PCRE'nin tarafından desteklenen regex, içinde koşullu ifadeler kullanıyor düşünüyorum. Bu gibi bir şey olur:

/(href\s*=\s*[\'\"])?(?(1)^|)((?:http:\/\/|www\.)\w[\w\d\.\/]*)(?=\s|$)/i

The key point is that if the href is captured, the match is immediately thrown out due to the conditional (?(1)^|), which is guaranteed to not match. There's probably something wrong with it. I'll test it out tomorrow.

0 Cevap