לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 17-12-2006, 12:14
  ob.nikon ob.nikon אינו מחובר  
 
חבר מתאריך: 12.05.06
הודעות: 139
ביטוים רגולריים ולולאה

קוד:
Array ( [0] => Array ( [0] => 690,596,865 938.89 945.36 943.70 942.81 0.01% 942.93 [1] => 828,041,677 939.88 944.97 941.57 942.15 0.07% 942.81 [2] => 115.08 0.29% 34.20 [3] => 161.25 0.68% 2,080 [4] => 246.12 0.83% 4,025 [5] =>


אחרי ששלפתי בעזרת file_get_content מאתר מסוים מידע (ומותר לשלוף ממנו מידע)
ועשיתי print_r זה מה שקיבלתי. (מה שמוצג כאן זה רק 5 מתוך 100 איברים, אבל התבנית זהה)

השאלה שלי איך אני יכול לעשות שזה יוצג בעזרת לולאה?
את מה שהאיבר 0 ואיבר 1 הציגו זה משהו לא קשור למה שרציתי אז שמתי את התנאי הבא
וניסיתי לעשות:
( $matches זה המערך שלו עשיתי print_r)
[
קוד PHP:
 $elem = array();

foreach(
$matches AS $s)
{
    foreach(
$s AS $t)
        
$elem[] = $t;
}

foreach(
$elem as $m){


if(
$i != && $i != 1){
echo 
"<tr><td></td><Td>".$m[0]." </td><td>".$m[1]."</td><td>".$m[2]."</td></tr>";
}
$i++;



והתוצאה מוזרה מאוד.
קוד:
d i <

במשך , 20 שורות
ואז כל השאר:
[code[
6 90
8 28
1 15
1 61
2 46
& nb
1 ,0
1 5,
[/code]

איך אני עושה שזה פשוט יציג את המספרים כמו שמתקבלים ב Print_r?
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 22-12-2006, 14:00
  ob.nikon ob.nikon אינו מחובר  
 
חבר מתאריך: 12.05.06
הודעות: 139
בתגובה להודעה מספר 1 שנכתבה על ידי ob.nikon שמתחילה ב "ביטוים רגולריים ולולאה"

הנה הקוד:
קוד PHP:
 $url 

"http://www.tase.co.il/TASE/MarketData/Indices/MarketCap/IndexMainDataMarket.htm?

Action=2&IndexID=137"
;            
   
$site file_get_contents($url);
preg_match_all('/<div align=right>(.*)<\/div>/'$site$matches);

//0 - DEL , 1- Del
//X[0]->מחזור המסחר(אלפי שח)
//X[1]->שינוי (%
//X[2]->שער אחרון (באגורות)

print_r($matches); 


והתוצאה נמצאת :
http://80.179.155.151/~obnikon/check.php

ואני רק רוצה שכל שורה ראשונה בכל איבר תהיה במערך מסוים,
הכוונה שבמערך (נקרא לו $a לשם הדגמה) יכיל את:
קוד:
1,029.17 1,110.51 1,140.70 0 .....


רק הערה קטנה את האיבר [0] ו[1] אני לא רוצה להשתמש, אז אני מניח שאפשר להשתמש בפונקצייה dump.

ומערך $b יכיל:
קוד:
-0.92% -1.25% 1.09% ....


וכן הלאה עד מערך$d.

וזהו.
זה הכל.
אבל משום מה, לא עובד.
אני פיצלתי לפי \n והשתמשתי ב 3 FOREACH ויצרתי 3 מערכים מהוסג: $array[$i][]
לפי מה ש DCD הציע.
אבל זה לא עובד.

תודה לעוזרים.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #12  
ישן 23-12-2006, 17:31
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
בתגובה להודעה מספר 11 שנכתבה על ידי ob.nikon שמתחילה ב "[right]הנה הקוד: [php] $url..."

אהא...הבנתי..

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

מחזור המסחר(אלפי ש"ח)
שינוי (%)
שער נעילה (באגורות)
ו- מס' ני"ע

המספרים תחת כל הטורים מתוחמים בתגית DIV, חוץ מהמספרים תחת הטור "מס' ני"ע" שזה מתוחם ב-td, לדוגמא:
קוד:
<td class="DataGridItem" align="Right">268011</td>


אז אני מציע שתעשה ביטוי רגולרי שיתאים לכל הטורים, שאת התוצאה תכניס למשתנה:

קוד PHP:
<?php
$url 
"http://www.tase.co.il/TASE/MarketData/Indices/MarketCap/IndexMainDataMarket.htm?Action=2&IndexID=137";
$site file_get_contents($url);
preg_match_all('/(<div[^>]+?>([^<]+)<\/div>|<td class="DataGridItem" align="Right">([^<]+)<\/td>)/i'$site$matches);
print_r($matches);
?>


הקוד הנ"ל נוסה וזה הצליח, רק שזה מציג גם דברים נוספים חוץ ממה שאתה רצית (כמו שחשבתי שזה יעשה...)
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #14  
ישן 23-12-2006, 12:35
  Fixxxer Fixxxer אינו מחובר  
 
חבר מתאריך: 21.09.02
הודעות: 408
בתגובה להודעה מספר 13 שנכתבה על ידי ob.nikon שמתחילה ב "אני ממש מתנצל על ההקפצה, אך..."

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

1. להכין ביטויי רגולרי אחר, אשר ישלוף באמת רק את מה שאתה צריך, לדוגמא:
קוד PHP:
 $url  "http://www.tase.co.il/TASE/MarketData/Indices/MarketCap/IndexMainDataMarket.htm?Action=2&IndexID=137";            
 
$site file_get_contents($url);
 
preg_match_all("#<div[^>]*>([^<]*)</div>#"$site$matches);
 
print_r($matches); 

הבעיה פה היא שנתונים לא יהיו מסודרים לך בשלישיות כמו שהיה עד עכשיו, השאלה כמה זה משנה לך והאם אתה יכול להסתדר בכל זאת, כי לדעתי זה פיתרון טוב.
הפיתרון השני הוא פשוט לקחת את הנתונים שיש לך עכשיו ולהוריד מהם את התגיות HTML ע"י שימוש ב strip_tags, אבל זה דורש ממך לשמור את המערך קודם כל בצורה כזאת שהנתונים לא יתערבבו כאשר אתה מוריד את התגיות, וזה דורש ממך לעבור על כל המערך ולחזור על הפעולה יותר מידי פעמים לדעתי. הפיתרון למעלה יותר מהיר, יותר יעיל וגם יותר נוח לדעתי, אבל מה אני מבין באתר הזה ובבורסה בכלל
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #22  
ישן 27-12-2006, 21:25
  ob.nikon ob.nikon אינו מחובר  
 
חבר מתאריך: 12.05.06
הודעות: 139
בתגובה להודעה מספר 1 שנכתבה על ידי ob.nikon שמתחילה ב "ביטוים רגולריים ולולאה"

טוב רק רציתי להודות לכולכם ולהצטער על הטרחה שגרמתי :]

הבעיה שלי הייתה שעשית COUNT($matches) בעוד המערך הרצוי הינו $matches[1]

::::::הבעיה האחרונה:::::::

באתר שממנו אני שולף את המידע ישנה עמודה של שמות בעברית:
קוד:
<td align=right class=DataGridItemReg><a href='/TASE/General/Company/companyMainData.htm?ShareID=00175018&CompanyID=000175&subDataType=0&' class='linkInGrid' dir=RTL>איביאי בית השק</a></td>


שימו לב שהSHAREID וה COMPANYID הם ערך שמשתנה עבור כל עמודה,
ואני הייתי רוצה לדעת איך אני יכול (במצב הנתון, שקיימים 2 דברים שאני לא מודע להם)
להציג את השמות, ובדוגמה להלן: "איביאי בית השק".

ולפני הרבה זמן שעשיתי עם התגיות כולן ב PREG MATCH , זה הציג לי גם דברים בג'בריש
משום מה , בהנחה שזה ייתכן להיות גם השמות, איך אני פותר את הבעייה של הג'בריש?


תודה רבה רבה

נערך לאחרונה ע"י ob.nikon בתאריך 27-12-2006 בשעה 21:28.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 17:09

הדף נוצר ב 0.09 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר