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

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

dor77 02-12-11 00:13

הוצאת ביטוי מתוך קוד מקור של האתר שלי
 
שלום.
אני רוצה לבנות סקריפט פשוט שיקרא את קוד מקור של האתר שלי ויחלץ משם משהו.
ניסיתי משהו כזה:

PHP קוד:


function get_string_between($string$start$end){
    
$string " ".$string;
    
$ini strpos($string,$start);
    if (
$ini == 0) return "";
    
$ini += strlen($start);
    
$len strpos($string,$end,$ini) - $ini;
    return 
substr($string,$ini,$len);
}

$fullstring file_get_contents("http://www.*******.co.il");
$parsed get_string_between($fullstring'<option value="DOS">''</option>');

echo 
$parsed

לא הולך..
אם אני נותן סתם משפט נגיד: שלום לכם ילדים
ואז אני יבדוק מ-שלום ל- ילדים זה יתן לי לכם...
אבל כאשר אני מערב את file_get_contacts ו שיש גרשיים באחד הביטויים משהו מתחרבש..מקבל מסך לבן..בלי כלום.

אשמח לעזרה, תודה רבה!

אדיר 02-12-11 02:29

למה שלא תשתמש בביטוי רגולרי?
preg_match

dor77 02-12-11 13:54

אממ..מה הדרך שבא זה יעזור לי?
האמת לא מנוסה כל כך..אשמח להכוונה..זה מאוד דחוף, תודה תודה!

Erez | TrustMedia.co.il 02-12-11 14:12

preg_match('/<option value="DOS">(.*)<\/option>/',$text,$match);
print_r($match);

משהו כזה

אדיר 02-12-11 14:13

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

dor77 02-12-11 19:26

ארז זה לא עובד..):

הנה הקוד במלואו בקיצור:

PHP קוד:


<?php

function get_part($start$end$haystack)
{
$start_position strpos($haystack$start0) + strlen($start);
$end_position strpos($haystack$end$start_position);

$haystack_length strlen($haystack);

return 
substr($haystack$start_position, ($end_position-$start_position));
}
$fullstring htmlspecialchars(file_get_contents("http://driverfast.com/AllSites/1/Pages/Admin/Fragment_Update.asp?Tree=29&FragmentId=1654"));
echo 
get_part('<option value="DOS">''</option>''' $fullstring '');



?>

תודה!!!

Haimz 02-12-11 19:39

תנסה את זה:
PHP קוד:

<?php

    $contents 
file_get_contents"http://www.******.co.il" );

    
preg_match_all'#<option value="DOS">(.+?)</option>#i' $contents $matches );
    
    
print_r$matches );
    
?>


Tal. 02-12-11 21:45

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

dor77 03-12-11 14:06

חיים זה מה שאני מקבל:

Array ( [0] => Array ( ) [1] => Array ( ) )

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

Itay 03-12-11 17:35

PHP קוד:

<?php
preg_match_all
('/\<option\ value\=\"DOS\"\>([^\<]+)\<\/option\>/ismx'$page$arr);
echo 
"<pre>";
print_r($arr);
?>


Erez | TrustMedia.co.il 03-12-11 17:58

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

iniKey.com 03-12-11 21:32

יותר מידי קל, אני לא מבין איך אתם מסתבכים:

PHP קוד:

function getpart($String$Start$End) {
    
preg_match("/{$Start}(.*){$End}/"$String$Matches);
    echo 
$Matches[1];
}

getpart("שלום לכם ילדים""שלום""ילדים");
getpart("Welcome you kid""Welcome""kid"); 


Itay 04-12-11 01:11

ציטוט:

נכתב במקור על ידי abshipping (פרסם 826988)
יותר מידי קל, אני לא מבין איך אתם מסתבכים:

PHP קוד:

function getpart($String$Start$End) {
    
preg_match("/{$Start}(.*){$End}/"$String$Matches);
    echo 
$Matches[1];
}

getpart("שלום לכם ילדים""שלום""ילדים");
getpart("Welcome you kid""Welcome""kid"); 


כן? אתה יכול להגיד לי מה יקרה אם אני ארשום שם פשוט
PHP קוד:

getpart('<option value="DOS">Some Value</option>''<option value="DOS">''</option>'); 

?

iniKey.com 04-12-11 16:43

ציטוט:

נכתב במקור על ידי Itay (פרסם 827019)
כן? אתה יכול להגיד לי מה יקרה אם אני ארשום שם פשוט
PHP קוד:

getpart('<option value="DOS">Some Value</option>''<option value="DOS">''</option>'); 

?

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

PHP קוד:

function getpart($String$Start$End) {
    
$String strip_tags($String);
    
$Start strip_tags($Start);
    
$End strip_tags($End);
    
preg_match("/{$Start}(.*){$End}/"$String$Matches);
    echo 
$Matches[1];


עכשיו אם אתה עושה:

PHP קוד:

getpart('<option value="DOS">Some Value</option>''<option value="DOS">''</option>'); 

הפלט שאתה מקבל הוא:

קוד:

Some Value
פשוט וקל מאוד.

Itay 04-12-11 19:20

תשמע, אני לא מבין את הרעיון שלך.. אתה לא יודע לתכנת או שאתה סתם מנסה להטעות את הבנאדם?
מה ההגיון בלהוריד את התאגים מתוך התאג שהוא מחפש?
בדוגמא שהבאת - לעשות strip_tags ל:
קוד:

<option value="DOS">
יתן לך כלום, כנ"ל לגבי החלק השני - ואז הקוד שלך בעצם מחפש בתוך קוד HTML שנוקו ממנו התאגים את הכל

ולתחום את התווים המתאימים בתוך ביטוי רגולארי זה לא חלק מאבטחה, זה חלק מהביטוי

iniKey.com 04-12-11 20:06

ציטוט:

נכתב במקור על ידי Itay (פרסם 827122)
תשמע, אני לא מבין את הרעיון שלך.. אתה לא יודע לתכנת או שאתה סתם מנסה להטעות את הבנאדם?
מה ההגיון בלהוריד את התאגים מתוך התאג שהוא מחפש?
בדוגמא שהבאת - לעשות strip_tags ל:
קוד:

<option value="DOS">
יתן לך כלום, כנ"ל לגבי החלק השני - ואז הקוד שלך בעצם מחפש בתוך קוד HTML שנוקו ממנו התאגים את הכל

ולתחום את התווים המתאימים בתוך ביטוי רגולארי זה לא חלק מאבטחה, זה חלק מהביטוי

תחשוב על זה,
יש לך דבר כזה "..."
מה יקרה שהוא ישתנה ל "שד"Aדג"
יש דגש שמשבשת את הקוד.

תנסה את מה שנתתי לך ותראה שהוא נותן לך את הערך שאתה צריך לקבל.

Itay 04-12-11 23:41

דגש שמשנה את הקוד? מה?

ואין לי מה לבדוק, אם אתה מוחק מ-<option value=".."> את התאגי HTML, אתה נשאר עם ערך ריק - הרי option והערך שלו זה תאג HTML, אז בדוגמא שלך כשאתה מוחק מ:
קוד:

<option value="DOS">Some Value</option>
את התאגי HTML, אתה נשאר רק עם "Some Value" - ואז בעצם די לא משנה בכלל מה תרשום, הוא פשוט יחזיר לך הכל
ואם אתה חושב אחרת - תבדוק את הקוד שלך ותענה אחרי שבדקת

iniKey.com 05-12-11 18:03

ציטוט:

נכתב במקור על ידי Itay (פרסם 827122)
תשמע, אני לא מבין את הרעיון שלך.. אתה לא יודע לתכנת או שאתה סתם מנסה להטעות את הבנאדם?
מה ההגיון בלהוריד את התאגים מתוך התאג שהוא מחפש?
בדוגמא שהבאת - לעשות strip_tags ל:
קוד:

<option value="DOS">
יתן לך כלום, כנ"ל לגבי החלק השני - ואז הקוד שלך בעצם מחפש בתוך קוד HTML שנוקו ממנו התאגים את הכל

ולתחום את התווים המתאימים בתוך ביטוי רגולארי זה לא חלק מאבטחה, זה חלק מהביטוי

הבנתי על מה הוויכוח פה,
הוא נתן דוגמא של ה<option> אז פשוט נתתי לו פונקצייה ספציפית לזה,
הוא מוריד לו את התגים לפני ואחרי ואז מאמת את כל הערכים המיותרים.

הרעיון שלי הוא רק לתגי HTML (כפי שהוא ביקש)!

סליחה אם לא הסברתי את עצמי כראוי.


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

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