Author Topic: [PHP] - praca so subormi  (Read 1682 times)

Mike

  • Hero Member
  • *****
  • Posts: 634
    • View Profile
[PHP] - praca so subormi
« on: 20.12.2010, 02:06:51 »
Zdravim,

mam subor prvy.txt, ktory ma obsah napriklad:
Code: [Select]
<b>nieco</b>
<p>text</p>


a chcem aby sa mi automaticky vygeneroval subor druhy.php, ktoreho obsah by bol:
Code: [Select]
<?php
echo' <b>nieco</b> ';
echo
' <p>text</p> ';
?>


cize na zaciatok kazdeho riadku by sa pridal vyraz [ echo' ] a na koniec kazdeho riadku by sa pridal vyraz [ '; ].

Poradte ako to mam spravit. Za vase napady vam dakujem.

Mike

  • Hero Member
  • *****
  • Posts: 634
    • View Profile
Re: [PHP] - praca so subormi
« Reply #1 on: 20.12.2010, 15:48:45 »
uz som na to prisiel, keby dakoho zaujimalo tak je to takto:

Code: [Select]
<?php
$data
=file('prvy.txt');
$vystup="<?php \n";
foreach (
$data as $riadok) {
   
$vystup.="echo ' ".$riadok." ';\n";
}
$vystup.=" ?>
";
file_put_contents('druhy.php',$vystup);
?>

tommy-sv

  • Sr. Member
  • ****
  • Posts: 308
  • kapitalista
    • View Profile
Re: [PHP] - praca so subormi
« Reply #2 on: 20.12.2010, 16:10:40 »
uz som na to prisiel, keby dakoho zaujimalo tak je to takto:

Code: [Select]
<?php
$data
=file('prvy.txt');
$vystup="<?php \n";
foreach (
$data as $riadok) {
   
$vystup.="echo ' ".$riadok." ';\n";
}
$vystup.=" ?>
";
file_put_contents('druhy.php',$vystup);
?>

Je to funkcne ale pozor, lebo pri konkatenacii retazcov s .= resp . engine pracuje so stale vacsim stringom a postupne sa vykon znizuje. Ak sa jedna o kratke subory je to jedno, v opacnom pripade by som ti odporucal priamo zapisovat kazdy riadok rovno do suboru s fwrite. Ak by si nepotreboval zapisovat do suboru, aj vtedy odporucam pouzit inu metodu, napr. implode() alebo ak sa jedna o zlozitejsiu kompoziciu stringov tak output buffer:

Code: [Select]
<?php
ob_start
();
echo 
"<?php \n";
foreach (
$data as $riadok) {
   echo 
"echo ' "$riadok" ';\n";
}
$vystup ob_get_clean();
?>
"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."