Ben regexplerde iyi değilim, ama ne yaptığınızı sadece bir iç URL ile dış URL'leri (site / uygulama yani parçası değil) yerine ise o thrus tıklayın ve kullanıcıyı yönlendirme, o zaman kolay olmalıdır izler Sadece dış URL'ler maç olacak regexpi inşa etmek.
Yani etki alanı foo.com
, o zaman sadece sadece http://foo.com
ile başlayan bir URL içermeyen bir köprüyü maç olacak regexpi oluşturmak gerekiyor diyelim. Dediğim gibi Şimdi, ben regexplerde ile oldukça kötü değilim, ama burada ona benim en iyi bıçak bulunuyor:
$reg[0] = '`<a(\s[^>]*)href="(?!http://foo.com)([^"]*)"([^>]*)>`si';
Edit:
If you want to track click-thrus to internal URLs as well, then just replace http://foo.com
with the URL of your redirect/tracking page, e.g. http://foo.com/out.php
.
Ben sadece bahsettiğimi göstermek için örnek bir senaryo üzerinden yürümek gerekir. Diyelim altında bülten var diyelim:
<h1>Newsletter Name</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec lobortis,
ligula <a href="http://bar.com">sed sollicitudin</a> dignissim, lacus dolor
suscipit sapien, <a href="http://foo.com">eget auctor</a> ipsum ligula
non tortor. Quisque sagittis sodales elit. Mauris dictum blandit lacus.
Mauris consequat <a href="http://last.fm">laoreet lacus</a>.</p>
Bu egzersiz amacıyla, arama deseni olacaktır:
// Only match links that don't begin with: http://foo.com/out.php
`<a(\s[^>]*)href="(?!http://foo.com/out\.php)([^"]*)"([^>]*)>`si
Bu sıradanifade 3 bölüme ayrılabilir:
<a(\s[^>]*)href="
(?!http://foo.com/out\.php)([^"]*)
"([^>]*)>
Arama ilk geçişte, komut inceleyeceğiz:
<a href="http://bar.com">
Bu bağlantı tatmin regexp tüm 3 bileşenleri, bu nedenle URL veritabanında depolanır ile değiştirilir http://foo.com/out.php?id=1
.
Arama ikinci geçişte, komut inceleyeceğiz:
<a href="http://foo.com/out.php?id=1">
Bu bağlantı 1 ve 3 ile eşleşir ancak 2 So arama sonraki bağlantıya hareket edecek.:
<a href="http://foo.com">
Bu bağlantı tatmin regexp tüm 3 bileşenleri, bu nedenle URL veritabanında depolanır ile değiştirilir http://foo.com/out.php?id=2
.
Arama 3. geçişte, komut, ilk 2 (zaten değiştirildi) bağlantıları incelemek onları atlamak ve daha sonra bülten son halkası ile bir maç bulabilirsiniz.