Jump to content
php.lv forumi

Kaa var tekstu aizstaat ar bildiiteem???


andris_b

Recommended Posts

shitaj pashaa forumaa pamnjem add reply ien tad labo klikshi un view source ta tu arii redzeesi kaa tas straadaa. jeb ar php to var shitaa:

 

$s = "images/smaidinsh.gif"; //$s buus smaidinja bildes celsh
$text = str_replace(":)",$s,$text);

echo $text;

 

rezultaataa :) vietaa paraadiisies bildiite smaidinsh.gif

 

:)

Link to comment
Share on other sites

es gan ieteiktu šādu te jau konkrēti apzīmetu koda gabalu

<?php
$teksts = str_replace(":)", "dir/sm1.gif", $teksts);
$teksts = str_replace(":(", "dir/sm2.gif", $teksts);
$teksts = str_replace(";)", "dir/sm3.gif", $teksts);
$teksts = str_replace(":P", "dir/sm4.gif", $teksts);
?>

utt

Link to comment
Share on other sites

  • 2 weeks later...

Ja daudz to smaidu, tad mozh labaak izmantot divus masiivus. Vienaa masiivaa glabaajam linkus uz bildiiteem, otraa attieciigi smaidinja tekstisko veidu.

4 exmpl.

 

<?php
// padodam skriptam mainiigo $teksts

$b_mas = array('smaids1.gif','smaids2.gif','beediigs.jpg');
$s_mas = array(':))',':)',':((');

/* elementus (tos smaidus) kam saakums ir liidziigs kaadam citam elementam ir jaaliek pirms taa cita elementa, citaadi :)) tiks uztverts kaa :) un aiz vinja veel paliks viena iekava */

for ($i=0;<=count($s_mas);$i++) {
$teksts = str_replace ($s_mas[$i],'<img src="'.$b_mas[$i].'">',$teksts);
}
echo $teksts;
?>

Edited by rnc
Link to comment
Share on other sites

Man ir ši pati problēma, tikai savādākā veidā...

 

Man ir ~300 sejiņas, lai nebūtu jādrukā man 300 rindu pēc jūsu ieteikuma, man vajadzētu darīt sekojošo:

 

No teksta izgreist aaraa vietas, kur tiek pieprasiita sejinja

Piemeeram: Teksta saakums :dusmiigs: teksta beigas.

 

vajag izgreist sejinju "dusmiigs" un apskatities vai uz servera ir taada sejinja ar is_file()

ja ir, tad atieciigo :dusmiigs: mees aizvietojam ar <img src="./dusmiigs.gif">

 

Tad man ir sejokosh jautaajums, kaa lai es izgreizhu no teksta sejinjas nosaukumu kursh ir starp koliem ielikts ?

 

ja tiek lietotas vairaakas sejinjas, tad vajadzeetu array salikt taas sejinjas_nosaukumus dabuut laukaa, Kaa man to izdariit? :unsure:

Link to comment
Share on other sites

Man ir ši pati problēma, tikai savādākā veidā...

 

Man ir ~300 sejiņas, lai nebūtu jādrukā man 300 rindu pēc jūsu ieteikuma, man vajadzētu darīt sekojošo:

 

No teksta izgreist aaraa vietas, kur tiek pieprasiita sejinja

Piemeeram: Teksta saakums :dusmiigs: teksta beigas.

 

vajag izgreist sejinju "dusmiigs" un apskatities vai uz servera ir taada sejinja ar is_file()

ja ir, tad atieciigo :dusmiigs: mees aizvietojam ar <img src="./dusmiigs.gif">

 

Tad man ir sejokosh jautaajums, kaa lai es izgreizhu no teksta sejinjas nosaukumu kursh ir starp koliem ielikts ?

 

ja tiek lietotas vairaakas sejinjas, tad vajadzeetu array salikt taas sejinjas_nosaukumus dabuut laukaa, Kaa man to izdariit? :unsure:

ielasi masiivaa visas pieejamaas sejinjas ;)

 

tb:

 

<?php
$dir = "images/";

  if ($dh = opendir($dir)) {
      while (($file = readdir($dh)) !== false) {
          if ($file != '..' AND $file != '.'){
               $replacements[':' . substr($file,0, -3) . ':'] = '<img src="images/'.$file.'" />';
          }
      }
      closedir($dh);
  }


strtr($text, $replacements);
?>

 

kaut kas uz šito pusi.

 

Doma sekojoša - ateram direktoriju lasīšanai ar opendir, tad skrienam cauri direktorijas saturam, meklējam visus failus, kas nav .. vai . un saliekam masīvā viņus bez faila paplašinājuma, pieliekot priekšā un beigās : un piešķiram vērtību, ar kuru aizvietosim attiecīgo simbolu kombināciju tekstā.

 

Visbeidzot uztaisam pašu smaidiņu aizvietošanas procedūru ar strtr.

 

Vismaz kaut kam uz pareizo pusi vajadzētu būt.

Link to comment
Share on other sites

Doma nav slikta, bet ir viens defekts, ka tomēr ja tajā direktorijā ir vēl vairāk sejinju un apgrozība aug, kods tiek lietots aiz vien biežāk, sanāk serverim šausmīgi liela un lieka slodze...

 

Tapēc es palieku pie sava jautājuma, kā masīvos var izvilkt no teksta Sejinjas_Nosaukumu kursh ir ielikts starp koliem vai citiem simboliem ?

 

Piemērs: Teksta sākums :dusmiigs: teksta vidus :laimiigs: teksta beigas.

 

Vēlamais rezultāts:

$smily[0] = 'dusmiigs';
$smily[1] = 'laimiigs';

 

Ar split vai līdzīgām php funckijām to varētu dabūt gatavu, tikai kā un ar kurām?

Link to comment
Share on other sites

Luuk Tev :

 

function asr($symb,$text){

       $a=explode($symb,$text);//sadalam peec simbola symb pa daljaam
       $o=array();//outputa masiivs
       $l=sizeof($a)-1;//masiiva izmeers
       foreach ($a as $k=>$v) {
               /*ja ir paara elements masiivaa peec kaartas un nav peedeejais
                 (izteixme, kas tikai izsaakas ar attieciigo simbolu
                 tad pievienojam outputam*/
               if ($k%2==1 && $k<$l) {
                       $o[]=$v;
               }
       }
       return $o;
       

}

 

Un izsaukums:

 

 

$smily=asr(':','fsdf :dusmiigs: teksta vidus :laimiigs: teksta beigas.');

print_r($smily);

 

Iedos Tev:

 

Array
(
   [0] => dusmiigs
   [1] => laimiigs
)

 

Vieniigais, ieteicams simbolu ":" aizvietot ar kaut ko garaaku, piemeeram, "::" (kaut ko, ko cilvji parasti neuzraxta), jo savaadaak, pats saproti, kas notix ar textu

"Jaaniitim ir: piecas roziines: vinjas visas ir skaistas".... :)

Edited by des
Link to comment
Share on other sites

Patiesiibaa, ja atdalosho simbolu virkniiti izdomaa taadu, ko cilveeki parasti taapat neuzraksta, tad kods sanaak veel iisaaks:

 

 

function asr($symb,$text){

       $a=explode($symb,$text);
       $o=array();
       foreach ($a as $k=>$v) {
               if ($k%2==1) $o[]=$v;
       }
       return $o;


}

Link to comment
Share on other sites

Negribas paaraak iedziljinaaties, bet vai tu man nevareetu paskaidrot:

 

Tagad tu ar des doto skriptu esi savilics vajadziigo sejinju tekstus masiivaa. Kaa tu ieveietosi taas sejinjas pareizajaas vietaas ?

 

updatis:

 

Padomaaju, ar ciklu + str_replace ejot paari tam jaunieguutajam masiivam un vecajam stringam ?

Edited by rnc
Link to comment
Share on other sites

Aatrdarbiibas noluukos var iztikt bez str_replace... bishku tikai jaapamodificee mana augstaak uzraxtiitaa fja, lai rezultaataa atgrieztu uzreiz jau repleisoto textu:

 

function asrt($symb,$text,$rpref,$rpost){

       $a=explode($symb,$text);
       $t='';
       foreach ($a as $k=>$v) {
               if ($k%2==1)
                       $t.=$rpref.$v.$rpost;
               else
                       $t.=$v;
       }
       return $t;


}


$smily=asrt('::','Texta saakums ::dusmiigs:: teksta vidus ::laimiigs:: teksta beigas.',"<img src='images/",".gif'>");

print ($smily);

 

Veel tur pat pa vidu var iebaazt arii chekoshanu, vai fails existee....

 

 

function asrtf($symb,$text,$rpref,$rpost,$fpref,$fpost){

       $a=explode($symb,$text);
       $t='';
       foreach ($a as $k=>$v) {
               if ($k%2==1) {
                       if (file_exists($fpref.$v.$fpost)){
                               $t.=$rpref.$v.$rpost;
                       } else {
                               $t.=$symb.$v.$symb;
                       }
               }
               else
                       $t.=$v;
       }
       return $t;


}

$smily=asrtf('::','Texta saakums ::dusmiigs:: teksta vidus ::laimiigs:: teksta beigas.',"<img src='images/",".gif'>","images/",".gif");

print ($smily);

 

 

Protams, peedeejaa gadiijumaa $rpref un $rpost var aizvietot ar kaut kaadu $imagepath & taadeejaadi naff 2x jaaraxta, bet miinuss ir, ka fjai zuud patvaljiigums un pielietojamiiba netikai, ka prefix ir vienkaarshi img....

whatever, ceru, ka domu saprati :)

Link to comment
Share on other sites

Katraa zinjaa apskatiities tikai attieciigajaa postaa esoshos ::smileyus:: && pachekot failu existenci ir daudz aatrdarbiigaak, nekaa pirms katra posta ielasiit visu 300 smailiju direktoriju & peec tam veel 300x repleisot, ir vai nav tas smailijs tur iekshaa...

Link to comment
Share on other sites

A kā būtu ātrāk vai šitas ar to dir skenēšanu, vai tas ko sākumā sviesc teica(es tadu ar 50 smaidiņiem izmantoju) ???

 

 

Vai nevarētu uztaisīt tā, ka

$teksts = str_replace(":)", "dir/sm1.gif", $teksts);

šitās 300 rindiņas stāv vienā failā un to inklūdo pa vidu kodam.

 

Un vēl savā administrātor lapā uztaisa formu ar 2 laikiem - viens bildes uploudam un otrs smaidiņa tekstam. Tad postojot attiecīgā rindiņa tiek pievienota faila beigās!!!

 

Tā ir tikai vēl viena ideja <_<

Link to comment
Share on other sites

des, pašlaik es savā saveidojumā arī izmantoju explode, bet ir viens defekts..

 

araayaa tiek sadaliits teksts ar sejinju atdalaamiem simboliem ::

 

Kas to procesu biki noslogo, iisti neidziljinaajos kaa tas viss pilniibaa darbojas, tomeer atradu vienu defektu, ja teksts ir shaads:

 

Texta saakums ::laimiigs: eksta vidus ::dusmiigs:: teksta beigas.

 

tad neviena no sejinjaam netiek uziimeeta...

 

Tomēr es atkal palieku pie sava jautājuma, kā ar "split" vai līdzīgām funkcijām var izvilkt no teksta araayaa tieši tās daļas kuras ir iekš atdalaamajiem simbokiem ::

 

Vai patiešām php mums tādas iespējas nesniedz ?

 

 

PS tos img folderus iespeejams nevajag 2x noraadiit, lai nav jaaparaksta visu laiku tie tavaa kodaa :)

Link to comment
Share on other sites

Labi, kā būtu ar šo?

 

<?php

 $dir = 'images/';

 $elements = explode (':', $text);
 foreach ($elements as $possibleSmiley){
   if (is_file($dir . $possibleSmiley)){
      $replacements[$possibleSmiley] = '<img src="' . $dir . $possibleSmiley . '" />';
   }
 }

 $text = strtr($text, $replacements);
?>

Link to comment
Share on other sites

×
×
  • Create New...