הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   האם קישור קיים באתר כלשהו. (https://hosts.co.il/forums/showthread.php?t=72187)

dor77 22-02-09 19:08

האם קישור קיים באתר כלשהו.
 
שלום.
ישנה פונקציה שבודקת האם ישנו קישור מסויים באתר כלשהו?
למשל שיחפש לי אם יש קישור באתר:www.example.com
הקישור למשל הוא: http://www.blabla.com

תודה רבה :)

daMn 22-02-09 19:20

אני מקווה שאתה מדבר על PHP.
בכ"מ לא שמעתי על פונקציה מובנת בPHP שמבצעת את זה, מה שכן אתה יכול לקבל תוכן של דף/אתר בעזרת file_get_contents או cURL ואז לבנות איזשהו ביטוי regex שייחפש לך את הלינק שהכנסת לו.
בהצלחה.

dor77 22-02-09 19:22

אני מדבר על PHP.
האם יש לך דוגמא לרעיון שלך?
אני רק צריך לדעת האם קישור קיים איפשהו, לא איכפת לי זו פונקציה מבונת או משהו שאני אאלתר.

תודה.

MusicMan 22-02-09 20:26

נסה את זה; זה כלי לניהול החלפת קישורים.
http://www.phpjunkyard.com/php-link-manager.php

dor77 22-02-09 20:34

ציטוט:

נכתב במקור על ידי moshe_z5 (פרסם 699657)
נסה את זה; זה כלי לניהול החלפת קישורים.
http://www.phpjunkyard.com/php-link-manager.php

אני צריך פונקציה, לא אתר שבודק את זה.
אם הייתי צריך לבדוק אטם יש קישור באתר כלשהו, הייתי עושה את זה באופן ידני.

תודה רבה על הניסיון.
עוד מישהו? :)

Daniel 22-02-09 21:19

אמרו כבר,
תיקח את התוכן של הקובץ,
ותבדוק בעזרת strpos האם הוא מכיל את הקוד של הקישור.

מה הבעייה?

dor77 22-02-09 21:22

ציטוט:

נכתב במקור על ידי MasterT (פרסם 699671)
אמרו כבר,
תיקח את התוכן של הקובץ,
ותבדוק בעזרת strpos האם הוא מכיל את הקוד של הקישור.

מה הבעייה?

אז שאלתי אם יש דוגמא כלשהי, לא עבדתי עם הסברים הללו בחיים.
תודה רבה לכל העוזרים.

Daniel 22-02-09 21:28

איפה נתקלת בבעייה?


לפי מה שאני רואה אתה "זועק", "תנו לי את הקוד". תגיד לנו איפה הבעייה.

dor77 22-02-09 21:31

אוקיי, הצלחתי להשתמש ב strpos.
אבל זה בטקסט.
לכן אני צריך שתמשנה כלשהו או משהו כזה יכיל את קוד המרוק של הכתובת שאני אגיד לו, ואז זה יהיה מעולה.
זה הstrpos:

PHP קוד:


<?
$blabla 
"blabla";
$b "b";
$strpos strpos($blabla$b);
if(
$strpos === false){
echo 
'המילה לא נמצאה';
}
else{
echo 
'המילה נמצאה';
}
?>

עכשיו אני צריך לקחת את קוד המקור של כתובת כלשהי.

תודה (:

daMn 22-02-09 21:33

MasterT אני לא יודע עד כמה strpos יהיה נכון לבעיה הנוכחית, לקישור יכול להיות מאפיינים ולינק בצורות שונות, הכוונה בלי www או עם, או אלף ואחד צורות שונות, לכן ביטוי רגולרי יעבוד בצורה הטובה ביותר.

לפותח האשכול, הנה הפונקציות שאתה בעיקרון צריך להשתמש, את הקוד לא תקבל, לפחות לא פה.
file_get_contents
preg_match

dor77 22-02-09 21:40

ציטוט:

נכתב במקור על ידי daMn (פרסם 699680)
MasterT אני לא יודע עד כמה strpos יהיה נכון לבעיה הנוכחית, לקישור יכול להיות מאפיינים ולינק בצורות שונות, הכוונה בלי www או עם, או אלף ואחד צורות שונות, לכן ביטוי רגולרי יעבוד בצורה הטובה ביותר.

לפותח האשכול, הנה הפונקציות שאתה בעיקרון צריך להשתמש, את הקוד לא תקבל, לפחות לא פה.
file_get_contents
preg_match

אין לי בעיה שלא תביאו לי קוד, פשוט רק לעזור.
הפוקציה הראשונה שהבאת, מראה לי את הדף עצמו, לא את קוד המקור, ככה שאם אני ישתמש בפוקנציה הקודמת, אני אוכל למצוא רק מילה שרואים בדפדפן, ולא בקוד המקור.
מה גם שאתה צודק, לקישור יש המון צורות.
לא הבנתי איך להשתמש בפונקציה השנייה ומה היא עושה.
אני לא דורש שתבנו לי מערכת, רק עזרה קטנה, הכוונה.

תודה.

daMn 22-02-09 21:47

ציטוט:

נכתב במקור על ידי dor77 (פרסם 699684)
אין לי בעיה שלא תביאו לי קוד, פשוט רק לעזור.
הפוקציה הראשונה שהבאת, מראה לי את הדף עצמו, לא את קוד המקור, ככה שאם אני ישתמש בפוקנציה הקודמת, אני אוכל למצוא רק מילה שרואים בדפדפן, ולא בקוד המקור.
מה גם שאתה צודק, לקישור יש המון צורות.
לא הבנתי איך להשתמש בפונקציה השנייה ומה היא עושה.
אני לא דורש שתבנו לי מערכת, רק עזרה קטנה, הכוונה.

תודה.

הפונקציה הראשונה בעצם מקבלת את הפלט השרת מוציא(שזה בעצם הקוד מקור), אתה פשוט פלטת אותו ולכן זה הציג לך את האתר, אבל אם למשל תפלוט אותו לtextarea תראה שזה קוד המקור.

לגבי הפונקציה, זה בעצם פונקציה שאתה מכניס לה ביטוי רגולרי והיא מחזירה לך 1 במידה והביטוי קיים ו0 במידה ולא.
תריץ חיפוש בגוגל ותנסה ללמוד ביטויים רגולריים, למתחילים זה חומר לא קל, אבל לא תמיד הכל קל.
תנסה להתחיל פה:
http://www.learnphp.co.il/26.guide
http://php.eitan.ac.il/main.php?id=00171

dor77 22-02-09 21:50

נראה לי שהצלחתי.
תראו זה הקוד:

PHP קוד:


<?


$homepage 
file_get_contents('http://www.example.com/');

$text "$homepage";
$find "link.com";
$strpos strpos($text$find);
if(
$strpos === false){
echo 
'לא נמצא';
}
else{
echo 
'נמצא';
}
?>

השתמשתי רק בפונקציה אחת, אחרי כמה בדיקות אני חושב שזה באמת בודק.
רק בגלל שיקושר יכול להירות בכמה צורות, אני מציג לו רק את הקישור + הסיומת למשל:
link.com
ככה זה בטוח חייב להיות.
אם אתם יכולים, תנסו להריץ בדיקה שלכם, לראות אם זה תקין והאם אתם חוזים לזה בעיות כלשהם.

תודה רבה לכם [:

daMn 22-02-09 21:52

תחשוב שקיים איזשהו סטרינג באתר שאתה מחפש בו שהוא: link.com והוא לא בלינק, אז הוא יכתוב לך שהוא מצא לינק.
בגלל זה regex יעשה את העבודה הכי טוב שיש.

intercooler3819 22-02-09 22:25

לא מבין למה אתם משתמשים בFILE GET CONTENTS

מישהו מבין את הבעיתיות פה?

HTTP RESPONSE זה STREAM ולא STRICT FILE
אתם לא יכולים להתיחס אליו בתור קובץ מהסיבה הפשוטה שאם השרת באסיה יקח לו בערך 7 שניות לקבל את זה - וFILE GET CONTENTS לא עובד טוב עם STREAMS

עדיף למשוך עם FSOCKOPEN כמו שצריך (ולולאת WHILE)

בנוסף הנה רגקס זריז ביותר..
PHP קוד:

<?php
$str 
"fdsfds";
preg_match_all("/<a[^>]+href=[\'\"]([^\'\"]+)[\'\"][^>]{0,}>(.*)<\/a>/Uis"$str$matches)
var_dump($matches);
// haven't tested it yet but it should work though..


dor77 23-02-09 14:17

תראו,
טיפה קשה לי לעשות את מה שאמרתם, לבד לא אצליח לבנות משהו כזה..
אני ישתמש בינתיים במה שבניתי, לשימוש שאני עושה לו אני חושב שלא צריכות להיות בעיות..ממש לא.
אם למישהו יש הצעה אחרת, אני אשמח.

תודה רבה לכל העוזרים ;]


כל הזמנים הם GMT +2. הזמן כעת הוא 16:22.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ