Hirdetés
- Ha nem növelnéd feleslegesen a villanyszámlád, a Chieftecnek van pár új ajánlata
- ARC vs eARC — Ilyet is tud a HDMI-d? 🤨
- A következő évtizedbe repíti a NAND hatékonyságát a Samsung új kutatása
- ASUS blog: kisebb, de nem gyengébb – a mini PC-k forradalma
- 5 kilowattos GPU-k előtt nyitná meg az utat az Intel
- Vezetékes FEJhallgatók
- Meghalt a Windows 10, éljen a Windows 10!
- Apple asztali gépek
- Kormányok / autós szimulátorok topikja
- Androidos fejegységek
- M.2 csatlakozók terén (is) jónak ígérkezik az MSI közelgő AMD-s alaplapja
- Gaming notebook topik
- Projektor topic
- Azonnali alaplapos kérdések órája
- Milyen monitort vegyek?
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
Nagyon egyszerű a dolog DOMDocument és DOMXPath használatával is, most meló utáni agypihentetőnek megcsináltam.
Elég könnyű volt:A PHP-fájl, ami az átalakítást elvégzi:
<?php
$originalFilename = './test.html';
$newFilename = './test_MODIFIED.html';
$dom = new DOMDocument();
$dom->loadHTMLFile($originalFilename);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query("//table[@id='starwars-table']/tbody/tr/td");
foreach ($nodes as $tdNode) {
$anchorNode = $dom->createElement('a', $tdNode->nodeValue);
$anchorNode->setAttribute('href', 'http://starwars.com/' . $tdNode->nodeValue . '-robot/' . strtolower($tdNode->nodeValue) . '.php');
$anchorNode->setAttribute('target', '_blank');
$tdNode->nodeValue = '';
$tdNode->appendChild($anchorNode);
}
// Create new file
//$dom->saveHTMLFile($newFilename);
// Print output
echo $dom->saveHTML();A tesztbemenet HTML-kódja, vagyis a kódban hivatkozott test.html tartalma:
<!DOCTYPE html>
<html>
<head>
<title>Asdasd</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div>
<table id="starwars-table">
<thead>
<tr>
<th>Test table header 1</th>
<th>Test table header 2</th>
<th>Test table header 3</th>
<th>Test table header 4</th>
</tr>
</thead>
<tbody>
<tr>
<td>TR-25-A</td>
<td>TR-25-B</td>
<td>2-2-SA</td>
<td>2-2-QWE</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>A kód által előállított kimenet:
<!DOCTYPE html>
<html><head><title>Asdasd</title><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><body>
<div>
<table id="starwars-table"><thead><tr><th>Test table header 1</th>
<th>Test table header 2</th>
<th>Test table header 3</th>
<th>Test table header 4</th>
</tr></thead><tbody><tr><td><a href="http://starwars.com/TR-25-A-robot/tr-25-a.php" target="_blank">TR-25-A</a></td>
<td><a href="http://starwars.com/TR-25-B-robot/tr-25-b.php" target="_blank">TR-25-B</a></td>
<td><a href="http://starwars.com/2-2-SA-robot/2-2-sa.php" target="_blank">2-2-SA</a></td>
<td><a href="http://starwars.com/2-2-QWE-robot/2-2-qwe.php" target="_blank">2-2-QWE</a></td>
</tr></tbody></table></div>
</body></html>Kicsit összenyomja a kódot, de gondolom ez nem para, az elvártak szerint lesz így már linkelve a szöveg.
Persze itt a táblázat azonosítója a starwars-table, ezt rögzítettem az XPath-ban.
Arra figyelj, hogy itt a HTML-kódban megadtam az egyébként opcionális <tbody> taget is (amúgy érdemes használni, szemantikailag picit szebb a kód tőle, ha van fejléc is, akkor meg azt érdemes <thead>-be rakni, úgy főleg szépen elkülönül a törzstől), ezt az XPath-ban is rögzítettem, de ha nálad nincs <tbody> tag használva, akkor szedd ki az XPath-ból is a tbody/ részt.
Ja, és kommentezve direkt odaraktam a $dom->saveHTMLFile($newFilename); sort is, amely a $newFilename változó tartalmában megadott névvel új dokumentumot hoz létre az új kimenettel (magyarul el tudod menteni másik fájlba a lecserélt változatot).Demonstrálás céljából felraktam neked ide a komplett kódot:
Itt persze a sima loadHTML metódust használtam a loadHTMLFile helyett, mivel itt nem fájltartalmat töltök be.
Új hozzászólás Aktív témák
- Otthoni hálózat és internet megosztás
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Az iPhone Air buktája elkaszálhatta vékonyítási lázat
- Nyaralás topik
- Telekom mobilszolgáltatások
- Motorola Edge 40 - jó bőr
- Elemlámpa, zseblámpa
- Xiaomi 14T Pro - teljes a család?
- Vezetékes FEJhallgatók
- Vivo X300 Pro – messzebbre lát, mint ameddig bírja
- További aktív témák...
- RYZEN 7 7800X3D 32 GB DDR5 RTX 3080 Ti 12GB 1TB M.2
- Lenovo ThinkPad P15 Gen 1 Tervező Vágó Laptop -50% 15,6" i7-10750H 32/512 QUADRO T1000 4GB
- Dell LAtitude 7490 FHD, TOUCH, i7-8565U CPU, 16GB DDR4, 512GB SSD, 27% ÁFÁS SZÁMLA, 1ÉV GARANCIA!
- Üzletből, Lenovo garanciával ThinkPad E14 Gen 5/ Intel Core i5-1335u/16GRAM/512SSD/FULL HD +kijelző
- HP Elitebook 840 G6 FHD, i7-8565U CPU, 16GB DDR4, 512GB SSD, 27% ÁFÁS SZÁMLA, 1ÉV GARANCIA!
- BESZÁMÍTÁS! Gigabyte B650M R5 7600X 32GB DDR5 512GB SSD RX 6900XT 16GB Zalman Z1 PLUS NZXT 850W
- Apple Watch Series 9 GPS+Cellular 41mm, 1 Év Garanciával
- Apple iPhone 13 / 128GB / Kártyafüggetlen / 12Hó Garancia / Akku: 100%
- Samsung Galaxy A53 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Telefon felvásárlás!! iPhone X/iPhone Xs/iPhone XR/iPhone Xs Max
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: Laptopműhely Bt.
Város: Budapest
Elég könnyű volt:

