webForumDet fria alternativet

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

PHP

2 svar · 746 visningar · startad av xtreme

Medlem sedan juli 20002 056 inlägg
Frågan#1

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

<!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

<!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.

<div id="contenttext">
				<!--content-->
			</div>

Taggen som omsluter <!--sidebar--> ska hamna i en varialbel eller likande.

			<div id="leftpanel">
				<!--sidebar-->
			</div>

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

<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>";

Medlem sedan mars 2007845 inlägg
#2

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

Om du istället har

<!-- BEGIN content -->
<div id="contenttext">
	...
</div>
<!-- END content -->
<!-- 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.

Medlem sedan juli 20002 056 inlägg
#3

drew skrev:

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

Om du istället har

<!-- BEGIN content -->
<div id="contenttext">
	...
</div>
<!-- END content -->
<!-- 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?

261 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)