Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwanie linków w tekscie
Forum PHP.pl > Forum > PHP
espeen
Witam.

Potrzebuję napisać wyrażenie regularne, które ma na celu wyszukanie wszystkich linków które linkują do innej strony niż np. http://www.example.com

Mam taki kod
  1. <?php
  2. $pattern = "/<as[^>]*hrefs*=s*([\"']questionmark.gif)[^example.com]([^\" >]*?)1[^>]*>(.*)</a>/siU";
  3. $result = preg_match($pattern, $tekst);
  4. ?>


Niestety to wyrażenie znajduje zarówno linki które linkują do http://www.example.com oraz takie które linkują gdzie indziej.

Czy może ktoś mi wskazać miejsce gdzie popełniłem błąd?

Z góry dzięki
nowotny
Cytat(espeen @ 19.02.2008, 20:09:51 ) *
[^example\.com]

Ten zapis nie będzie ci działał tak jak chcesz bo ten ciąg nie jest traktowany jak string tylko jak zbiór znaków... poza tym w nawiasach kwadratowych nie eskejpuje się znaków specjalnych...

Ja ci proponuję podejść od innej strony... zamiast sprawdzać czy dany link nie linkuje do example.com zrób takie zapytanie które będzię sprawdzać czy linkuje... potem możesz odpowiednio zamanipulować rezultatem funkcji preg_match zamiast kombinować wyrażenie...
espeen
Cytat(nowotny @ 19.02.2008, 20:51:03 ) *
Ja ci proponuję podejść od innej strony... zamiast sprawdzać czy dany link nie linkuje do example.com zrób takie zapytanie które będzię sprawdzać czy linkuje... potem możesz odpowiednio zamanipulować rezultatem funkcji preg_match zamiast kombinować wyrażenie...

Niestety nie o to chodzi. Chodzi o to aby sprawdzić czy w tekście istnieje jakikolwiek link inny niż example.com. Czyli sprawdzenie czy istnieją linki które linkują do example nie daje nic bo gdy na stronie bedzie 5 linków z czego 2 linkują do example.com a reszta np do nextexample.com to preg_match i tak zwróci true.
nowotny
Dlatego musisz stworzyć takie zapytanie które wyłapie tylko i wyłącznie linki do example.com a inne, w stylu nextexample.com, pominie...
espeen
Cytat(nowotny @ 20.02.2008, 20:06:17 ) *
Dlatego musisz stworzyć takie zapytanie które wyłapie tylko i wyłącznie linki do example.com a inne, w stylu nextexample.com, pominie...

Jest to pewne podejście ale czy możesz doklaniej wytłumaczyć co dzięki niemu osiągnę?
Jeżeli policze ile mam linków do example to musze potem jeszcze policzyc ile mam wszystkich linków w stronie i jeżeli obie liczby się zgodzą to jest ok, a jeżeli nie to znaczy że są jakieś linki zewnętrzne. Ale to są już jest podwójne mielenie tekstu dlatego wolałbym zrobić to w jednym zapytaniu czyli znaleźć linki różne od np example.com

Może ma ktoś jeszcze jakiś pomysł?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.