Autor Zpráva
kokolino
Profil
ahojte
mám text v tabuľke ako je to tuto Odkaz
ja by som potreboval urobiť nasledujúcu vec, všetky slová, ktoré sa nezhodujú s prvým postupne nahradiť iným číslom /textom
napríkld všetky texty "oko" by sa nahradili 1 a vsetky slová "aaa" sa nahradili 2
viem zistiť, ktoré slová sa nezhodujú s prvým, tie si zapísujem zatiaľ do poľa (pretože odlišné slová sa majú nahradzovať postupne )

mohli by ste mi poradiť/nasmerovať ma ako to mám spraviť ?
predom ďakujem za každú radu
l564
Profil
A tabulku načítáš přes MySql nebo normálně jí máš v HTML
kokolino
Profil
l564:
hodnoty do tabuľky načítavam zo súbora
<?php
$file = file("janko.txt", FILE_SKIP_EMPTY_LINES);
for ($i=0; $i<count($file); $i++) {
  $row = $file[$i][0]; 
  $col = $file[$i][1];
  $pole[$row][$col]=trim(substr($file[$i],3)); 
  // --------
  $cols = max($cols,$col); // pocet stlpcov tabulky
  $rows = max($rows,$row); // pocet riadkov tabulky
}

echo "<br><br><table>";
echo "<tr><td>x/y</td>";
for ($j=0;$j<=$cols; $j++){
    echo "<td>$j</td>";
}
echo "<tr>";

for ($i=0;$i<=$rows;$i++){
  echo "<tr><td>$i</td>";
  for($j=0;$j<=$cols;$j++){
    echo "<td><table><tr><td>{$pole[$i][$j]}</td></tr></table></td>";
  }
  echo "<tr>";
}
echo "</table>";

$prvky=array(); // pole pre prvky, ktore sa nezhoduju s prvou hodnotou v tabulke
foreach($auto as $line){
    $okno=explode(' ',$line);
	$otazka=substr($okno[0],-1);
	if(($otazka==0) and ($otazka!=1)) {
		if ($mul == '???') $mul = trim($okno[1]);
		if(trim($okno[1]!=trim($mul))) array_push($prvky,(trim($okno[1])));	
	}
	if($okno[1]==$mul) $okno[1]=str_replace($okno[1],"0",$okno[1]);
	elseif($prvky[1]!=$mul) {$okno[1]=str_replace($okno[1],"1",$okno[1]);}
	echo"$okno[1]"; 
}
?>

toto mi všetky texty "mul" nahradí 0 ,text "oko" nahradí 1, ale nahradí mi to aj slová "aaa" 1 a nie 2 ako to potrebujem ja
Taps
Profil
kokolino:
zkus
<?
....
 if($okno[1]==$mul) $okno[1]=str_replace("oko","0",$okno[1]);
    elseif($prvky[1]!=$mul) {$okno[1]=str_replace("aaa","1",$okno[1]);}
....
?>
kokolino
Profil
Taps:
zrejme som sa nevyjadril dostatočne správne v prvom kroku sa má nahradiť vsetko 0 okrem textu "oko", ktoré sa ma nahradiť 1, to znamená aj text "aaa"
v druhom kroku opačne tých krokov možem mať "N"

vymyslel som niečo takéto :
<?php
......
$prvky1=array_values(array_unique($prvky)); // prepocitanie klucov aby som vedel kolko krat mam iny text, podla toho viem kolko krat to musim nahradit 
$okno1=$okno[1];  // tento riadok *********

if($okno[1]==$mul ) $okno[1]=str_replace($okno[1],"0",$okno[1]);   //vsetko co sa rovna prvemu prvku v subore nahrad "0"
	if($okno[1]==$prvky1[0]) {$okno[1]=str_replace($okno[1],"1",$okno[1]);}   //ak sa prvy prvok prvky1("oko") nerovna prvemu prvku v subore nahrad ho "1"
	else {$okno[1]=str_replace($okno[1],"0",$okno[1]);}   //ostatne nezhodne prvky nahrad "0"
	
if($okno1==$mul ) $okno1=str_replace($okno1,"0",$okno1); 
	if($okno1==$prvky1[1]) {$okno1=str_replace($okno1,"2",$okno1);}   //ak sa druhy prvok prvky1("aaa") nerovna prvemu prvku v subore nahrad ho "2"
	else {$okno1=str_replace($okno1,"0",$okno1);}
....
?>


Tento spôsob nahradzovania ide ako má problém je v tom, že ja neviem dopredu koľko tých textov budem musieť nahrádzať ak by ich bolo 10 to by som musel robiť nasledovne :
riadok 4 by som musel okopírovať 10 krát s tým, že by som len menil index pre $okno1 až $okno10
rovnako riadky 6,7,8 by som musel stále kopírovať a meniť v nich len $prvky1[1] až $prvky1[10] a číslo nahradenia
a toto mi vadí lebo ak to spravím pre 10 textov bude to fungovať, ale ak to bude testované na viacerých textoch tak to zlyhá

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