Meddelande

Minska
No announcement yet.

Kopiera ut specifik html-kod med PHP DOM? Eller bättre än regular expression?

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Kopiera ut specifik html-kod med PHP DOM? Eller bättre än regular expression?

    Har html-koden nedan med två stycken kommentarer <!--content--> och <!--sidebar-->


    HTML-kod:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<meta name="author" content="Wink Hosting (www.winkhosting.com)" />
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	<link rel="stylesheet" href="images/style.css" type="text/css" />
    	<title>RedTie</title>
    </head>
    <body>
    	<div id="page" align="center">
    		<div id="content" style="width:800px">
    			<div id="logo">
    				<div style="margin-top:70px" class="whitetitle">RedTie</div>
    			</div>
    			<div id="topheader">
    				<div align="left" class="bodytext">
    					<br />
    					<strong>Your Company Name</strong><br />
    					Evergreen Terrace 742<br />
    					Kansas Missouri<br />
    					Phone: 432-653-3121<br />
    					sales@thetiecompany.com
    				</div>
    				<div id="toplinks" class="smallgraytext">
    					<a href="#">Home</a> | <a href="#">Sitemap</a> | <a href="#">Contact Us</a>
    				</div>
    			</div>
    			<div id="menu">
    				<div align="right" class="smallwhitetext" style="padding:9px;">
    					<a href="#">Home</a> | <a href="#">About Us</a> | <a href="#">Products</a> | <a href="#">Our Services</a> | <a href="#">Contact Us</a>
    				</div>
    			</div>
    			<div id="submenu">
    				<div align="right" class="smallgraytext" style="padding:9px;">
    					<a href="#">Submenu 1</a> | <a href="#">Submenu 2</a> | <a href="#">Submenu 3</a> | <a href="#">Submenu 4</a> | <a href="#">Submenu 5</a> | <a href="#">Submenu 6</a>
    				</div>
    			</div>
    			<div id="contenttext">
    				<!--content-->
    			</div>
    			<div id="leftpanel">
    				<!--sidebar-->
    			</div>
    			<div id="footer" class="smallgraytext">
    				<a href="#">Home</a> | <a href="#">About Us</a> | <a href="#">Products</a> | <a href="#">Our Services</a> | <a href="#">Contact Us</a>
    				| Your Company Name 
    				&copy; 2007 | <a href="http://www.winkhosting.com" target="_blank">Hosting Colombia</a> 
    			</div>
    		</div>
    	</div>
    </body>
    </html>
    Jag skulle vilja kopiera ut delar från html-koden så här.

    Allt som är innan taggen där <!--content--> finns ska hamna i en varialbel eller likande ex

    HTML-kod:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<meta name="author" content="Wink Hosting (www.winkhosting.com)" />
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	<link rel="stylesheet" href="images/style.css" type="text/css" />
    	<title>RedTie</title>
    </head>
    <body>
    	<div id="page" align="center">
    		<div id="content" style="width:800px">
    			<div id="logo">
    				<div style="margin-top:70px" class="whitetitle">RedTie</div>
    			</div>
    			<div id="topheader">
    				<div align="left" class="bodytext">
    					<br />
    					<strong>Your Company Name</strong><br />
    					Evergreen Terrace 742<br />
    					Kansas Missouri<br />
    					Phone: 432-653-3121<br />
    					sales@thetiecompany.com
    				</div>
    				<div id="toplinks" class="smallgraytext">
    					<a href="#">Home</a> | <a href="#">Sitemap</a> | <a href="#">Contact Us</a>
    				</div>
    			</div>
    			<div id="menu">
    				<div align="right" class="smallwhitetext" style="padding:9px;">
    					<a href="#">Home</a> | <a href="#">About Us</a> | <a href="#">Products</a> | <a href="#">Our Services</a> | <a href="#">Contact Us</a>
    				</div>
    			</div>
    			<div id="submenu">
    				<div align="right" class="smallgraytext" style="padding:9px;">
    					<a href="#">Submenu 1</a> | <a href="#">Submenu 2</a> | <a href="#">Submenu 3</a> | <a href="#">Submenu 4</a> | <a href="#">Submenu 5</a> | <a href="#">Submenu 6</a>
    				</div>
    			</div>
    Taggen som omsluter <!--content--> ska hamna i en varialbel eller likande.

    HTML-kod:
    <div id="contenttext">
    				<!--content-->
    			</div>
    Taggen som omsluter <!--sidebar--> ska hamna i en varialbel eller likande.
    HTML-kod:
    			<div id="leftpanel">
    				<!--sidebar-->
    			</div>
    Allt som är efter taggen där <!--sidebar--> finns ska hamna i en varialbel eller likande ex

    HTML-kod:
    <div id="footer" class="smallgraytext">
    				<a href="#">Home</a> | <a href="#">About Us</a> | <a href="#">Products</a> | <a href="#">Our Services</a> | <a href="#">Contact Us</a>
    				| Your Company Name 
    				&copy; 2007 | <a href="http://www.winkhosting.com" target="_blank">Hosting Colombia</a> 
    			</div>
    		</div>
    	</div>
    </body>
    </html>
    html-koden ovan är bara ett exempel och jag vill att php koden (parsern) ska fungera även om html koden ser annerlunda ut. Dock kommer kommentarerna alltid att finnas med i koden så jag vill de bestämmer vad som ska extraheras och inte ID eller class inne i en div. Eftersom det är ett html dokuemnt kommer såklart även taggarna doctype, html och body att finns även om strukturen är annerlunda.

    Har tittat på preg_match men många rekomenderar att man använder PHP DOM istället för regular expression. Hur kan jag uppnå mitt mål på ett bättre sätt än med regular expression?

    Vill med andra ord i slutändan har fyra variabler (eller motsvarande).

    $header = "Allt innan <div id="contenttext">";
    $content = "<div id="contenttext"> <!--content--> </div>";
    $sidebar = "<div id="leftpanel"> <!--sidebar--> </div>";
    $footer = "Allt efter <div id="leftpanel"> <!--sidebar--> </div>";
    http://www.galnanyheter.com/ - Galna nyheter utöver det vanliga

    Skaffa Dropbox - Ett självklart val för att synkronisera filer mellan datorerna samt telefonen.

  • #2
    Det där är aningen knepigt oavsett metod du väljer.

    Om du istället har
    HTML-kod:
    <!-- BEGIN content -->
    <div id="contenttext">
    	...
    </div>
    <!-- END content -->
    HTML-kod:
    <!-- BEGIN sidebar -->
    <div id="leftpanel">
    	...
    </div>
    <!-- END sidebar -->
    så skulle det varra enkelt att plocka ut det med strpos() och substr(). Det skulle nog vara det smidigaste sättet att få det gjort.
    http://tumba25.net

    Kommentera


    • #3
      drew skrev: Visa inlägg
      Det där är aningen knepigt oavsett metod du väljer.

      Om du istället har
      HTML-kod:
      <!-- BEGIN content -->
      <div id="contenttext">
      	...
      </div>
      <!-- END content -->
      HTML-kod:
      <!-- BEGIN sidebar -->
      <div id="leftpanel">
      	...
      </div>
      <!-- END sidebar -->
      så skulle det varra enkelt att plocka ut det med strpos() och substr(). Det skulle nog vara det smidigaste sättet att få det gjort.
      Så det går även om det är knepigt? Har du någon hint eller tips på hur jag löser en av variablerna iaf?
      http://www.galnanyheter.com/ - Galna nyheter utöver det vanliga

      Skaffa Dropbox - Ett självklart val för att synkronisera filer mellan datorerna samt telefonen.

      Kommentera

      Working...
      X