21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
frk
Profil *
Zdravím!
mám takový problém:
existuje textarea:
<textarea name="obr1" cols="60"></textarea>

do které se vkládají odkazy na obrázky oddělené nějakým znakem (třeba mezerou).
Takto: http://farm3.static.flickr.com/2572/3994079347_1077c48ce7.jpg http://farm3.static.flickr.com/2572/3994079347_1077c48ce7.jpg http://farm4.static.flickr.com/3245/3132787846_9fab31f35a.jpg http://farm4.static.flickr.com/3245/3132787846_9fab31f35a.jpg

z řetězce
$obr1
musím nějakým způsobem dostat řetězec v tradičním tvaru pro obrázky. Tedy nějak nahradit mezeru za
" alt="" hspace="5" vspace="5" border="0" align="left"> <img src="


Takže takto to udělat na začátku řetězce: jenom přidám
<img src="
a na konci zase
" alt="" hspace="5" vspace="5" border="0" align="left">
, že?

takže to vypadá takto, kdy je jeden odkaz:
$obr2 = '<img src="'$obr1.'" alt="" hspace="5" vspace="5" border="0" align="left">'


ale jakým způsobem se v tomto řetězci pak nahradí mezera, pokud textarea obsahuje více než jeden odkaz na obrázek? (aby to pak nezlikvidovalo mezery před alt, border, align se to musí udělat před tímto krokem..)
Díky za rady a podněty :)
mckay
Profil
frk:
Zkusil bych si najít nějaký regulární výraz, který by testoval správný tvar odkazu + mezera a po odeslání pomocí konstrukce
preg_replace();
nahrazovat odkazy za <img ....
keeehi
Profil
Takto to bude asi nejjednodušší:
$promenna //zde je to co přijde textarey
$pole_obrazku=explode(" ",$promenna);
foreach($pole_obrazku as $obrazek)
  echo '<img src="'.$obrazek.'" alt="" hspace="5" vspace="5" border="0" align="left">';
frk
Profil *
děkuji vám oběma,
je lepší to změnit naráz než po částech, jak to ale pak někam vložím?
čili jak se z toho udělá jeden řetězec? (nebo to nelze?)

 umask(0);  
    $new = "$prvni_div echo $pole_obrazku$$zaverecny_div"; // tak ??
    $new = "$prvni_div$pole_obrazku$$zaverecny_div"; // nebo ??
    $new = "$prvni_div". echo'<img src="'.$obrazek.'" alt="" hspace="5" vspace="5" border="0" align="left">'"$zaverecny_div"; // a nebo?
    $new = "$prvni_div"  echo '<img src="'.$obrazek.'" alt="" hspace="5" vspace="5" border="0" align="left">'."$zaverecny_div"; // zoufalost 4
   $old = $new.$old;
  $f = fopen("obrazky.htm","w");
  fputs($f,$old);
  fclose($f);
keeehi
Profil
frk:
Všechno to přiřaďování do proměnné $new je zoufalost. (ani jedno snad nefunguje)

To moje řešení přímo ty obrázky vypíše. Pokud by jsi je chtěl uložit do proměnné $new tak by to vypadalo takto:
$promenna //zde je to co přijde textarey
$pole_obrazku=explode(" ",$promenna);
foreach($pole_obrazku as $obrazek)
  $new .= '<img src="'.$obrazek.'" alt="" hspace="5" vspace="5" border="0" align="left">';
frk
Profil *
keeehi:
Ano, byla to zoufalost.
Šlo mi o to, abych měl soupis všech obrázků v jedné proměnné, a to potom vložil do souboru.
$obr2=explode(" ",$obr2);
foreach($obr2 as $obrazek)
$sumar .= ' <img src="'.$obrazek.'" alt="" hspace="5" vspace="5" border="0" align="left">   ';
$new = "$prvni_div$sumar$zaverecny_div"; // toto jde! 

Takže tvoje poslední zpráva vše vyřešila.
Díky za pomoc.
keeehi
Profil
$new = "$prvni_div$sumar$zaverecny_div"; // toto jde!
Myslím, že mám lepší konstrukci: (nebo alespoň se mi víc líbí)
$new = $prvni_div.$sumar.$zaverecny_div;
AM_
Profil
frk:
Šlo mi o to, abych měl soupis všech obrázků v jedné proměnné, a to potom vložil do souboru.
nebylo by lepší ukládat to tak, jak to přišlo z formuláře (tedy odkazy oddělené mezerami) a zpracovat je při výpisu? třeba se jednoho dne rozhodneš, že chceš vspace="6", a nebudeš muset nahrazovat všechny výskyty ve všech uložených záznamech ;) co se týče rychlosti zpracování, je to tak triviální, že to nemůže být poznat.
frk
Profil *
keeehi:
Vypadá hezky, to nemohu popřít :)
(a co je rychlejší na zpracovaná nemohu posoudit :) )
AM:
Neplánuji zpětnou editaci. A pokud ano, rychlost hromadné náhrady bude pro mne rychlejší, než nyní vymýšlet způsob na zpracování z nyní již existujícího záznamu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0