הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 14-03-14, 13:53   # 1
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

הצאת מילה בין תגי html

שלום.
אני מתחבר לאתר כלשהו באמצעות curl, שואב את קוד המקור שלו ורוצה לקחת את כל התוכן שיש בין 2 תגיות html..חשוב לציין שכל פעם התגיות יכולות להשתנות לכן אני חייב שזה יהיה דימני.
בהוצאת מילה בין שתי מילים אין בעיה..אבל כשמערבים תגיות של html זה נותן שגיאה.

PHP קוד:
Undefined offset1 in D:wampwwwcurl.php on line 29 
זו שורה 29:

PHP קוד:
echo $match[1]; 
הנה הקוד:

PHP קוד:

function get_source_code($url)
{
  
$ch curl_init();
  
$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1)".
                            
" Gecko/20061204 Firefox/2.0.0.1";
  
  
curl_setopt($chCURLOPT_URL$url);
  
curl_setopt($chCURLOPT_HEADER0);
  
curl_setopt($chCURLOPT_USERAGENT$useragent);
  
curl_setopt($chCURLOPT_RETURNTRANSFER1);    
  
  
$source_code curl_exec($ch);
  
  
curl_close($ch);
  
$source_code nl2br(htmlspecialchars($source_code));
}

$s_c get_source_code('http://www.blabla.com');

$start '<div id="login">';
$end '<div id="search">';
preg_match('/'.preg_quote($start).'(.*?)'.preg_quote($end).'/is'$s_c$match);
echo 
$match[1]; 

אשמח לעזרה, תודה.
__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743
  Reply With Quote
ישן 15-03-14, 12:30   # 2
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

למה ה nl2br(htmlspecialchars(?

השגיאה מרמזת על זה שהביטוי רגולרי לא מצא את מה שאתה רוצה שהוא ימצא לכן במערך של התוצאות אין את התא 1
  Reply With Quote
ישן 15-03-14, 12:34   # 3
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

אוקייף הסרתי את שתי הפוקנציות האלה..
גם עכשיו, שגיאה.

PHP קוד:

function get_source_code($url)
{
  
$ch curl_init();
  
$useragent="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36";
  
  
curl_setopt($chCURLOPT_URL$url);
  
curl_setopt($chCURLOPT_HEADER0);
  
curl_setopt($chCURLOPT_USERAGENT$useragent);
  
curl_setopt($chCURLOPT_RETURNTRANSFER1);
  
  
$source_code curl_exec($ch);
  
  
curl_close($ch);
  
$source_code $source_code;
  return 
$source_code;
}

$s_c get_source_code('http://www.blabla.com');

$start '<li class="menu"><a href="#">';
$end '</a>';
preg_match('/'.preg_quote($start).'(.*?)'.preg_quote($end).'/is'$s_c$match);
echo 
$match[1]; 
הstart וend מופיעים ככה בקוד מקור, אני מנסה לקבל את מה שבניהם.
עכשיו אני מקבל:

PHP קוד:
Warningpreg_match(): Unknown modifier 'a' in D:wampwwwcurl.php on line 24 
תודה רבה!
__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743
  Reply With Quote
ישן 15-03-14, 12:39   # 4
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

את ה preg_quote תעשה ככה:
PHP קוד:
preg_quote($val'/'
ותקרא בתיעוד מה זה עושה
http://il1.php.net/preg_quote
  Reply With Quote
ישן 15-03-14, 12:54   # 5
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

רק ל start?
ככה:

PHP קוד:
preg_match(preg_quote($start'/').'(.*?)'.preg_quote($end).'/is'$s_c$match); 
או גם לend, ככה:

PHP קוד:
preg_match(preg_quote($start'/').'(.*?)'.preg_quote($end'/').'/is'$s_c$match); 
זה אמור לסדר את הקטע של הסלאשים?
עדיין שגיאה..
__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743
  Reply With Quote
ישן 15-03-14, 12:57   # 6
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

ציטוט:
נכתב במקור על ידי dor77 צפה בהודעה
רק ל start?
ככה:

PHP קוד:
preg_match(preg_quote($start'/').'(.*?)'.preg_quote($end).'/is'$s_c$match); 
או גם לend, ככה:

PHP קוד:
preg_match(preg_quote($start'/').'(.*?)'.preg_quote($end'/').'/is'$s_c$match); 
זה אמור לסדר את הקטע של הסלאשים?
עדיין שגיאה..
שניהם...
תקרא מה זה עושה. זה עושה escape גם ל delimiter שלך
מה השגיאה עכשיו?
  Reply With Quote
ישן 15-03-14, 13:01   # 7
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

זו השגיאה:

PHP קוד:
preg_match(): Delimiter must not be alphanumeric or backslash in D:wampwwwcurl.php on line 24 
זה מה שעשיתי:

PHP קוד:
preg_match(preg_quote($start'/').'(.*?)'.preg_quote($end'/').'/is'$s_c$match); 
__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743

Last edited by dor77; 15-03-14 at 13:11..
  Reply With Quote
ישן 15-03-14, 13:44   # 8
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

תחזיר את ה / זה הדלימיטר, והוא צריך להיות גם בתור פרמטר ל preg_quote
  Reply With Quote
ישן 15-03-14, 14:08   # 9
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

בדיוק שמתי לב והחזרתי אותו רבל יש בעיה אחת..הוא אכן מציג את המ שאני רוצה אבל כאשר אני נותן לstart ו end ערכים כמו:

PHP קוד:
$start '</ul>
            </li>
            <li class="menu-item"><a href="store.php">'
;
$end '</a></li>
          </ul>
        </nav>
    </div>'
;
preg_match('/'.preg_quote($start'/').'(.*?)'.preg_quote($end'/').'/is'$s_c$match);
echo 
$match[1]; 
אני מקבל שגיאה:

PHP קוד:
Undefined offset1 in D:wampwwwcurl.php on line 45 
ועשיתי העתק הדבק, לא המצאתי ירידת שורה או רווחים למיניהם.

וזו השורה:

PHP קוד:
echo $match[1]; 
שוב, אם הייתי נותן ערכים כאלו:

PHP קוד:
$start '<span class="name">';
$end '</span>'
זה עובד מעולה.
ה preg_match שלי כתוב נכון?

PHP קוד:
preg_match('/'.preg_quote($start'/').'(.*?)'.preg_quote($end'/').'/is'$s_c$match); 
תודה רבה.
__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743
  Reply With Quote
ישן 15-03-14, 14:15   # 10
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

חשוב להבין משהו "Undefined offset:"
זו לא שגיאה של תקלה בקוד אלא פשוט הוא לא מוצא לפי הקלט שהבאת לו, ואתה צריך לשחק עם הSTART/END ואולי גם לכתוב ביטוי רגולרי יותר מתוחכם.

וגם ירידת שורה נחשב תו שהביטוי רגולרי אמור לתפוס.

אם אתה רוצה לנסות לעשות לעצמך חיים יותר קלים אפשר לעשות STRIP לירידות שורה

משהו כזה:
PHP קוד:
str_replace(array("\r""\n"), ''$string
http://stackoverflow.com/a/6766580/711152
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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