- Ízléses lett a Drop kompakt, vezeték nélküli klaviatúrja
- Jól felszerelt, csúcskategóriás külső videokártya jött a Gigabyte zászlaja alatt
- Gamescom 2025: Limitált szériás Godlike X lap és más finomságok az MSI-nél
- Leégett az első Radeon a hírhedt 12V-2x6 tápkonnektorral
- India betiltja a pénzalapú online játékokat
- Az előírások megszegése miatt éghet le egyes alaplapokon a Socket AM5 foglalat
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Leégett az első Radeon a hírhedt 12V-2x6 tápkonnektorral
- 3D nyomtatás
- Bluetooth hangszórók
- Adatmentés - HDD - SSD - Flash
- Sony MILC fényképezőgépcsalád
- OLED TV topic
- DDR4 vs DDR5 vs DDR6 – melyik kell neked?
- Milyen billentyűzetet vegyek?
Új hozzászólás Aktív témák
-
fordfairlane
veterán
Melyik PHP verzión próbálkozol? Nekem jó a numerikus kiíratás 5.4.7 alatt. Ez a kód ezt a kimenetet produkálja:
<?php
$chart = array(
Array ( "x" => "2014-07-17 01:00:21", "y" => 0 ),
Array ( "x" => "2014-07-17 01:05:21", "y" => 0 ),
Array ( "x" => "2014-07-17 01:10:22", "y" => 10 ),
Array ( "x" => "2014-07-17 01:15:21", "y" => 0 ),
Array ( "x" => "2014-07-17 01:20:21", "y" => 20 ),
Array ( "x" => "2014-07-17 01:25:22", "y" => 0 )
);
print_r(json_encode($chart));
?>Kimenet:
[{"x":"2014-07-17 01:00:21","y":0},{"x":"2014-07-17 01:05:21","y":0},{"x":"2014-07-17 01:10:22","y":10},{"x":"2014-07-17 01:15:21","y":0},{"x":"2014-07-17 01:20:21","y":20},{"x":"2014-07-17 01:25:22","y":0}]
-
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.
-
PumpkinSeed
addikt
Beolvasod a HTML fájlból az egész táblázatot, majd egy megfelelő reguláris kifejezés segítségével elemeire bontod, a táblázat számodra kellő elemeit letárolod egy tömbben. Majd
echo "<td><a target="_blank" href="http://starwars.com/".$tomb[1]."-robot/".strtolower($tomb[1]).".php">".$tomb[1]."</a></td>";
Értelemszerűen a $tomb[1]-nél az egyes helyére egy for ciklus segítségével beteszel egy változót ami végig indexeli a táblád összes elemét. Röviden és tömören egy nagyon kezdetleges és általános megoldás.
-
Sk8erPeter
nagyúr
"a többit is hasonlóan"
Milyen a többi? Azt is ismerni kell, különben nehéz általános átalakítást javasolni rá. Legalább még pár példát mondanod kéne.Például ha van egy <td>kutya-füle</td>, akkor abból lesz
<td><a target="_blank" href="http://starwars.com/kutya-füle-robot/kutya-füle.php">kutya-füle</a></td>
? Vagy mi? Mert az alapján, amit írtál ("többit is hasonlóan"), ez lenne a logikus.
-
DNReNTi
őstag
(#15537) PumpkinSeed, (#15536) Sspot egyik sem.
Legjobb ha írsz rá egy függvényt.
Valszeg találnál a neten ha keresnél, de most jókedvem van, bemásolom az enyémet.
Szívesen.function generateUrl($string){
if (!empty($string)) {
$CHARMAP = array('á'=>'a','Á'=>'A','é'=>'e','É'=>'E','í'=>'i','Í'=>'I','ó'=>'o','ö'=>'o','ő'=>'o','Ó'=>'O','Ö'=>'O','Ő'=>'O','ú'=>'u','ü'=>'u','ű'=>'u','Ú'=>'U','Ü'=>'U','Ű'=>'U');
$string = strtr($string, $CHARMAP);
$string = strtolower($string);
$string = preg_replace('/[^a-zA-Z0-9]/', '_', $string);
$string = preg_replace('{(_)\1+}', '$1', $string);
if (substr($string,-1) == '_') { $string = substr($string, 0, -1); }
return $string;
} else {
return false;
}
} -
#81999360
törölt tag
Új hozzászólás Aktív témák
Hirdetés
- Napelem
- sh4d0w: Netflix? Ugyan, VW előfizetés!
- Az előírások megszegése miatt éghet le egyes alaplapokon a Socket AM5 foglalat
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Google Pixel topik
- Apple Watch Ultra - első nekifutás
- Gumi és felni topik
- Leégett az első Radeon a hírhedt 12V-2x6 tápkonnektorral
- AliExpress tapasztalatok
- Lesz Xperia 10 VII, méghozzá újratervezett külsővel
- További aktív témák...
- Asus ROG Flow Z13 WUXGA 120Hz 2in1 Touch i9-12900H 14mag 16GB 512GB Nvidia RTX 3050Ti W11 Garancia
- Asus ROG Flow Z13 WUXGA 120Hz 2in1 Touch i9-12900H 14mag 16GB 512GB Nvidia RTX 3050Ti Win11 Garancia
- Eladó iPhone 14 Pro 128GB Black Karcmentes
- iPhone 14 Pro 1TB Deep Purple Hatalmas tárhely, 100% akku!
- MSI GTX1660 super 6gb új állapot OEM 2db.
- Apple iPhone 12 128GB, Kártyafüggetlen, 1 Év Garanciával
- Bomba ár! HP Elitebook 840 G1 - i5-4GEN I 8GB I 180GB SSD I 14" HD+ I Cam I W10 I Garancia!
- HP EliteBook 840 G7 i5-10210U 16GB 256GB 1 év garancia
- BESZÁMÍTÁS! LG 24MB35PM 60Hz FHD IPS 5ms monitor garanciával hibátlan működéssel
- Bomba ár! Dell Latitude E5250 - i5-5GEN I 8GB I 128SSD I 12,5"FHD Touch I HDMI I Cam I W10 I Gari!
Állásajánlatok
Cég: FOTC
Város: Budapest