Przepraszam za odgrzanie starego kotleta... yyy to znaczy topika, ale uważam to za stosowniejsze niż tworzenie nowego o prawie identycznej treści.
Mam sobie otóż taki skrypt:
<?php
$stary = "Lorem ipzum dolor sit amen, consectetuer adipiscing elit. In dam Ci libero,
malesuada eget, faucibus ut, aliquam ac, metus. Pellentesque enim pede, sceleris
que non, porrrrrttitor quis, semper in, lorem. Vaginum et pede sit amet odio euis
mod molestie. Nullam id erat ut augue commodo convallis. Quisque ligula. Cras ege
stas, ipsum a ornare mollis, lacus leo hendrerit quam, in consectetuer nunc quam
at mauris. Aenean diam. Vivamus imperdiet massa. In feugiat adipiscing sem. Duis orci.Ut scelerisque turpis vita
e nisi. Sed vel mi nec diam aliquet elementum. Nulla elementum aliquet tortor. Do
nec vel urna non erat facilisis commodo. Ediotumam laoreet risus ut leo. Null sol
licitudin accumsan turpis. Duis portu. Pellentesque pulvinar.";
$nowy = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In diam libero, m
alesuada eget, faucibus ut, aliquam ac, metus. Pellentesque enim pede, scelerisqu
e non, porttitor quis, semper in, lorem. Vestibulum et pede sit amet odio euismod
molestie. Nullam id erat ut augue commodo convallis. Quisque ligula. Cras egesta
s, ipsum a ornare mollis, lacus leo hendrerit quam, in consectetuer nunc quam at
mauris. Aenean diam. Vivamus imperdiet massa. In feugiat adipiscing sem. Duis orci.Ut scelerisque turpis vita
e nisi. Sed vel mi nec diam aliquet elementum. Nulla elementum aliquet tortor. Do
nec vel urna non erat facilisis commodo. Etiam laoreet risus ut leo. Nullam solli
citudin accumsan turpis. Duis porta. Pellentesque pulvinar.";
// STEP 1: rozdziela tekst na zdania
//STEP 2: dodaje do explodowanego tekstu kropki na koniec
for ($i=0;count($arr_stary)>$i;$i++) {
$arr_stary[$i] = $arr_stary[$i] . ".";
}
for ($i=0;count($arr_nowy)>$i;$i++) {
$arr_nowy[$i] = $arr_nowy[$i] . ".";
}
//STEP 3: oblicza różnicę w tablicy
//STEP 4: wykazanie różniących się zdań
//STEP 5: wyświetlenie wyników
for ($i=0;count($roznice)>$i;$i++) {
echo "<table width='100%' border='1'><tr><td width='50%'>"; echo $arr_stary[$roznice[$i]]; echo "</td><td width='50%'>"; echo $arr_nowy[$roznice[$i]]; echo "</tr></table><hr>"; }
?>
Funkcja ta jak (może) widać wykazuje różnice w tekstach. Działa jak należy jednak tylko do pokazywania różnic na poziomie jednego zdania - gdy ilość zdań pozostała niezmienna. Jeśli jednak jakieś zdanie zostało wyrzucone pojawia się problem -
array_diff" title="Zobacz w manualu php" target="_manual dobrze pokazuje różnice jednak nie wiem jak wyświetlić to, że jakieś zdanie zostało wyrzucone lub dodane. Wpadłem zatem na pomysł, aby pokazać jedno wcześniejsze i jedno kolejne zdanie. W ten sposób będzie np. "To jest. Zdanie jakieś. Trzecie tam." oraz "To jest. Trzecie tam." - i to pokaże całe te teksty jako porównanie. Użyłbym do tego:
<?php
//STEP 5: wyświetlenie wyników
for ($i=0;count($roznice)>$i;$i++) {
echo "<table width='100%' border='1'><tr><td width='50%'>"; echo $arr_stary[$roznice[$i]-1] . " " . $arr_stary[$roznice[$i]] . " " . $arr_stary[$roznice[$i]+1
]; echo "</td><td width='50%'>"; echo $arr_nowy[$roznice[$i]-1] . " " . $arr_nowy[$roznice[$i]] . " " . $arr_nowy[$roznice[$i]+1
]; echo "</tr></table><hr>"; }
?>
I wszystko jest OK, ale tylko w momencie gdy jedno zdanie zostało usunięte. Potem zaczyna się sypać.
Any ideas?
Powiem krótko: potrzebuję czegoś takiego jak na Wiki.