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

הוסטס - פורום אחסון האתרים הגדול בישראל (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 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. הזמן כעת הוא 14:05.

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