ugrás a tartalomhoz

HTML oldalban szövegcsere PHP-vel

Anonymous · 2006. Feb. 12. (V), 15.54
Üdv mindenkinek!

A kérdésem a következő lenne: hogyan lehetne PHP-vel egy HTML oldalban a szöveget kicserélni (hogy az egész szöveg változzon a HTML-elemek/tag-ek megmaradjanak)?

Válaszaitokat előre is köszönöm.
 
1

Leginkább...

janoszen · 2006. Feb. 12. (V), 19.11
Leginkább mondjuk azt csinálod, hogy a szöveg részét beinclude-olod mindig a megfelelő szövegrészeket. Remélem, jól értettem, mit is szeretnél.
2

<Nincs cím>

tiny · 2006. Feb. 12. (V), 19.25
Hát olyanra gondolsz, hogy pl van ez, hogy:
<!--tartalom--> és azt kicserélni valamire?
Mert akkor meg kell nyitni a fájlt és str_replace(); függvényt használni hozzá.
Mr.Tiny [http://tiny.uw.hu]
3

Nem pontosan...

Anonymous · 2006. Feb. 12. (V), 23.17
Arra gondoltam, hogy egy HTML-állományból az elemek közűl kiszedni a tetszőleges szöveget, és más tetszőlegesre kicserélni.

Tehát például az eredeti szöveg:
<?xml version="1.0" encoding="iso-8859-2"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>A BB-kódok rejtelmei</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
 </head>
 <body>
  <h1>Bevezetés</h1>
  <p>A BBCode segítségével formázni tudod a szövegedet, abban az esetben is, ha nincs engedélyezve számodra HTML formátum használata a beküldéseknél. A BBCode a PHPBB fórumszoftverből származik, a Drupal ennek egy egyedi megvalósítását használja.</p>
  <p>BBCode terminust használva, "elemek" segítségével formázhatod a szöveget. Minden elemet [ és ] közé kell tenni. Amennyiben a szöveg egy részét szeretnéd megjelölni, akkor kezdő és záró elemeket kell használni. A záró elem [/-el kezdődik, ahogy azt mindjárt látni is fogjuk. Figyelj arra, hogy ha elírsz egy elemet vagy elfelejted lezárni, akkor nem a várt megjelenést fogod kapni!</p>
 </body>
</html>
És ebből az átalakított változat:
<?xml version="1.0" encoding="iso-8859-2"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>A macskákról</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
 </head>
 <body>
  <h1>Hosszú szőrű macskák</h1>
  <p>A perzsamacska az egész világon a legkedveltebb. Fejének gömbölyűsége az erős pofákból, a gömbölyű állból, a rövid orrból, a kicsi, egymástól távol álló, felül lekerekített fülekből adódik. Viszonylag nagy, kerek szemei távol ülnek egymástól. Teste tömzsi, rövid, végtagjai erősek, dús szőrzetű farka szintén rövid. A perzsák valamennyi színváltozata természetes, úgynevezett angóra típusból származik, amelyet a rövid szőrű macskák hosszú szőrű mutációjából tenyésztettek ki. Bár a perzsa és az angóra típus szőre egyaránt hosszú, mégis van különbség köztük. A perzsának lényegesen hosszabb (15 cm is lehet) és finomabb a szőrzete.</p>
   <p>Fekete perzsa: Egyes fekete perzsakölykök szőrszíne egészen 7-8 hónapos korukig rozsdaszínű vagy szürke. A telített fekete szín csak 12-18 hónapos korban, a második szőrváltás után alakul ki. Növendékkorban fehér szőrszálak is előfordulhatnak, azonban mindkét jelenség eltűnik a növekedés során. Nemkívánatos tulajdonság a sötét narancssárga szemek zöldes elszíneződése.</p>
 </body>
</html>
Mint a mellékelt példából is láthatjátok az oldal HTML-elemei megmaradnak, csak a szöveg változik. Na ezt hogyan lehet megoldani?
4

<Nincs cím>

krey · 2006. Feb. 12. (V), 23.58
Én egy hasonló elven működő honlapot kreálok éppen, és abban van egy index.php, és az GET-tel kapja meg, hogy milyen tartalmat kell megjelenítenie.
A GET-ben kap egy fájlnevet, ami ha létezik (és egyéb ellenőrzések) akkor include és ami egy php script és csak 3 var van benne beállítva:

A te oldalad esetében ezek
<?php
$title = "az oldal címe"; //pl A macskákról
$h1 = "A htmlben megjelenített cím"; //pl Hosszú szőrű macskák
$p = array("Az első p-ben lévő szöveg","A második p-ben lévő szöveg","Az x-edik p-ben lévő szöveg");
Az index.php így kezdődik:
<?php
include_once('tartalom.php'); //ebben vannak a var-ok eltárolva
echo('<?xml version="1.0" encoding="iso-8859-2"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>'.$title.'</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
 </head>
 <body>');
Aztán
<?php echo('<h1>'.$h1.'</h1>');
Szépen végigvezeted, minden stimmel, a végén csinálsz egy foreach-et ami minden a p minden elemét kiírja:
<?php
foreach ($p as $element) {
echo('<p>'.$element.'</p>');
}
Persze a végén perbody, perhátéemel
és elvileg stimmel minden, ha nem erre gondoltál akkor bocsi :-)

krey
5

Smarty

Anonymous · 2006. Feb. 13. (H), 01.21
Ajánlom a smarty rendszer használatát.
smarty.php.net
6

Nem ennyire egyszerű.

Anonymous · 2006. Feb. 13. (H), 19.36
És mi van abban az esetben, ha az oldal kódja tetszőleges? Teljesen teszőleges!
Azt hiszem, valahogy reguláris kifejezésekkel kéne bajlódni (a > és a < közötti tetszőleges szöveg, kivétel a <)... de mi lenne a megfelelő reguláris kifejezés?
7

Követelmény?

janoszen · 2006. Feb. 13. (H), 22.34
Üdv!

Valami követelmény csak van, nem? Hogy mit akarsz kicserélni. Mert a PHP nem fogja a gondolataidat kiolvasni, hogy mit akarsz.

Egyébként reguláris kifejezéssel könnyen megoldható feladat.

Talán írd le kicsit specifikusabban a feladatot, hátha van rá valami épkézláb megoldás.

J
8

Magyarázom bizonyítványom....

Anonymous · 2006. Feb. 14. (K), 17.17
Tehát még1szer az eljárás:
1. A HTML állományból kiszedem a szöveget (például ami a <p>...</p>; <li>...</li>; <td...</td>; <title...</title> elemek között vannak).
2. A szöveget kicserélem más tetszőlegesre, vagy átalakítom (például szimpla Caesar/Vignere kódolással...)
3. Az átalakított/kicserélt szöveget az eredeti HTML álományba visszahelyezem úgy, hogy a struktúra megmaradjon (tehát ami eredetileg a <h1>...</h1> elemek közűl szedtem ki az ugyanoda kerűljön vissza)

Az még megoldható, hogy a szöveget megszabadítom a HTML-elemektől (például a strip_tags függvénnyel), de hogyan jegyezze meg a szöveg struktúrában betöltött helyét? Tehát például hogyan jegyezze meg azt, hogy a Bevezetés helyére kerülő Hosszú szőrű macskák a <h1>...</h1> elemek közé kell hogy kerűljön?

Remélem érthető voltam.
9

kezdem érteni

Anonymous · 2006. Feb. 14. (K), 17.35
olyasmit akarsz csinálni, mint ami a http://pornolize.com/ címen van?

gex
10

Aha...

Anonymous · 2006. Feb. 14. (K), 18.22
Hasonlót, csak a teljes szöveg cseréjével.
Szóval nem egyszerű str_replace megoldást...

Megoldható, vagy túl őrült 5let?
11

Parser

janoszen · 2006. Feb. 14. (K), 22.02
Hát, akkor vagy XML parserrel beolvastatod vagy írsz egy sajátot. Sajnos az a helyzet, hogy ha nem validálódik az oldal, akkor nagy valószínűség szerint nem fog menni.

Ergo, saját parser. Nem kell bonyolult. De valami kell.