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

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

dor77 15-03-14 14:28

לעשות את זה לstart ו end או לקוט מקור שמוחזר מהפונקציה?

בניה 15-03-14 14:58

ציטוט:

נכתב במקור על ידי dor77 (פרסם 887473)
לעשות את זה לstart ו end או לקוט מקור שמוחזר מהפונקציה?

לקוד שמוחזר מהפונקציה, ואז ב start ו end שלך אתה תוכל להוריד את הירידות שורה

dor77 15-03-14 15:17

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

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 str_replace(array("\r""\n"), ''$source_code);

  return 
$source_code;


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

PHP קוד:

$start '<li class="menu-item"><a href="#">PRODUCT</a>              <ul class="dropdown">                <li class="menu-item sub-menu"><a href="link.php">';
$end '</a></li>'

אין דרך יותר נוחה מאשר להקפיד להשאיר את הטאבים האלו?

תודה רבה לך, מעריך מאוד!

dor77 15-03-14 16:15

טוב..הצלחתי..נראה לי יצא מאוד מסורבל..(אם תראה דרך לייעל, בכיף)..
מצרף את הקוד..
ותודה רבה לך.


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 str_replace(array("\r""\n"), ''$source_code);

  return 
$source_code;
}

$s_c get_source_code('http://www.bla.com');
$s_c preg_replace('~>\s+<~m''><'$s_c);

$start '<div id="menu">
            <ul class="menu">
                <li>'
;
$end '</li>';


$start preg_replace('~>\s+<~m''><'$start);
$end preg_replace('~>\s+<~m''><'$end);

preg_match('/'.preg_quote($start'/').'(.*?)'.preg_quote($end'/').'/is'$s_c$match);
echo 
$match[1]; 


zoharesh 15-03-14 20:40

למה לעבוד בצורה כזו?
תעבוד עם DOM Document
http://il1.php.net/manual/en/class.domdocument.php

dor77 15-03-14 20:50

ציטוט:

נכתב במקור על ידי zoharesh (פרסם 887479)
למה לעבוד בצורה כזו?
תעבוד עם DOM Document
http://il1.php.net/manual/en/class.domdocument.php

אפשר לדעת מה הבעיה בשיטה הזו?
והאמת שלא מצאתי שם משהו שממש מתאים..יש לך דוגמא אולי?

תודה.

zoharesh 16-03-14 01:04

לא בדקתי, אבל משהו כזה אמור לעבוד:
PHP קוד:

<?php
$sc 
"<html>....."// source code here
$dom = new DOMDocument();
$dom->strictErrorChecking false// don't check for html errors
$dom->loadHTML($sc);
$menu $dom->getElementById('menu');
$li $menu->getElementsByTagName('li');
$final = [];
foreach(
$li as $l)
  
$final[] = $l->nodeValue;

יוציא לך את הטקסט של כל תגי ה-li במערך.

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

*לא בדקתי אבל אם אני לא טועה זה אמור לעבוד.

בניה 16-03-14 11:09

ציטוט:

נכתב במקור על ידי zoharesh (פרסם 887484)
לא בדקתי, אבל משהו כזה אמור לעבוד:
PHP קוד:

<?php
$sc 
"<html>....."// source code here
$dom = new DOMDocument();
$dom->strictErrorChecking false// don't check for html errors
$dom->loadHTML($sc);
$menu $dom->getElementById('menu');
$li $menu->getElementsByTagName('li');
$final = [];
foreach(
$li as $l)
  
$final[] = $l->nodeValue;

יוציא לך את הטקסט של כל תגי ה-li במערך.

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

*לא בדקתי אבל אם אני לא טועה זה אמור לעבוד.

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

zoharesh 16-03-14 11:34

אני לא בטוח במה שאתה אומר, יש לו שם 4 ביטויים רגולאריים.
יהיה מעניין לעשות ל2 הקודים השוואת ביצועים :)


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

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