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:
  1. <?xml version="1.0" encoding="iso-8859-2"?>  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">  
  3. <html xmlns="http://www.w3.org/1999/xhtml">  
  4.  <head>  
  5.   <title>A BB-kódok rejtelmei</title>  
  6.   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />  
  7.  </head>  
  8.  <body>  
  9.   <h1>Bevezetés</h1>  
  10.   <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>  
  11.   <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>  
  12.  </body>  
  13. </html>  
És ebből az átalakított változat:
  1. <?xml version="1.0" encoding="iso-8859-2"?>  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">  
  3. <html xmlns="http://www.w3.org/1999/xhtml">  
  4.  <head>  
  5.   <title>A macskákról</title>  
  6.   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />  
  7.  </head>  
  8.  <body>  
  9.   <h1>Hosszú szőrű macskák</h1>  
  10.   <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>  
  11.    <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>  
  12.  </body>  
  13. </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
  1. <?php  
  2. $title = "az oldal címe"//pl A macskákról  
  3. $h1 = "A htmlben megjelenített cím"//pl Hosszú szőrű macskák  
  4. $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:
  1. <?php  
  2. include_once('tartalom.php'); //ebben vannak a var-ok eltárolva  
  3. echo('<?xml version="1.0" encoding="iso-8859-2"?>  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">  
  5. <html xmlns="http://www.w3.org/1999/xhtml">  
  6.  <head>  
  7.   <title>'.$title.'</title>  
  8.   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />  
  9.  </head>  
  10.  <body>');  
Aztán
  1. <?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:
  1. <?php  
  2. foreach ($p as $element) {  
  3. echo('<p>'.$element.'</p>');  
  4. }  
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.