Yerel Linkler değiştirin, Dış Bağlantılar tutun

2 Cevap php

Ben aslında bir barındırılan wiki uygulama sayfasının HTML döndüren bir API çağrısı var. Sonra benim siteler stil kılavuzları başı olarak biçimlendirmek için bazı substr, str_replace ve preg_replace kung-fu yapıyorum.

(Benim wikiParse? Sayfanın şey = pageX türü pageX bir bağlantı değiştirme) benim sol nav biçimlendirmek için aramaların bir set yapın. Ben güvenle sol nav yapabilirsiniz. Gövde metninde ise, ben güvenli bir bağlantı, bir iç sayfasına bir link kabul edemeyiz. Bu çok iyi bir dış kaynak bir bağlantı olabilir. Yani http:// tarafından takip edilmez href = eşleşen bir preg_replace yapmak gerekir.

İşte bu benim bıçak olduğunu:

$result = preg_replace('href\=\"(?!http\:\/\/)','href="bla?id=',$result);

Bu sayfadaki tüm içeriğini dışarı şerit görünüyor. Ben kaymış nerede herkes görebilir? Ben sadece nereye gelecek göremiyorum, ben çok uzakta olduğumu sanmıyorum.

Şerefe

2 Cevap

preg_* işlevleri expect Perl-Compatible Regular Expressions (PCRE). Normal normal ifadeler için yapısal fark ifadenin kendisi modifiers mümkün gelen ifadeyi ayrı ayraç içine sarılmış olmasıdır. Klasik ayraç / ama PHP ters eğik çizgi karakteri dışında herhangi bir alfasayısal olmayan karakter verir. Ayrıca bkz Intruduction to PCRE in PHP.

Yani bu deneyin:

$result = preg_replace('/href="(?!http:\/\/)/', 'href="bla?id=', $result);

İşte href="(?!http://) is the regular expression. But as we use / ayraç olarak, ifadenin içinde / oluşumları tersbölüleri kullanarak kaçtı gerekir.

Sizin sıradanifade ('/' varsayılan) sınırlayıcı başlangıç ​​ve bitiş eksik;

$result = preg_replace('/href\=\"(?!http\:\/\/)/','href="bla?id=',$result);