Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwanie linków w tekscie
espeen
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 5.01.2006
Skąd: Kraków

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
nowotny
post
Post #2





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
espeen
post
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 5.01.2006
Skąd: Kraków

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
nowotny
post
Post #4





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


Dlatego musisz stworzyć takie zapytanie które wyłapie tylko i wyłącznie linki do example.com a inne, w stylu nextexample.com, pominie...
Go to the top of the page
+Quote Post
espeen
post
Post #5





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 5.01.2006
Skąd: Kraków

Ostrzeżenie: (10%)
X----


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ł?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 11:01