grzesgracz
3.05.2004, 19:33:58
Witam!
Mam takie pytanie: czy da się zrobić, żeby pojedyncze literki takie jak: w, a, o, z, nie pozostawały nigdy na końcu linijki jako ostatnie? To rzecz jasna błąd w pisowni, którego chciałbym uniknąc na stronie...
Moze w css jest cos takiego?
Bede wdzieczny za pomoc
Pozdrawiam,
Grzesiek
Gonzo
3.05.2004, 19:48:13
O ile używasz czcionki o stałej szerokości znaku, to chyba nie będzie większych problemów.
Najpierw funkcją explode() zamieniasz string z tekstem na tablicę. Potem w pętli lecisz sobie licząc, które słowo zostanie na końcu. Jeżeli jest krótsze od powiedzmy 4 znaków, wstawiasz przed nim <br>. Na koniec zamieniasz wszystko z powrotem na tekst i jazda.
Oczywiście musisz to sobie dopracować

.
grzesgracz
3.05.2004, 20:14:38
Hmm...
Nie o taki sposób mi chodziło :wink: Nie uzywam czcionki o regularnych literach, ani nie wiem, w tabelkach o jakiej szerokosci bedzie wyswietlany tekst. Dzieki.
cichy
3.05.2004, 20:35:06
Raczej nie możliwe do wykonania.
Bo niby skąd skrypt miałby wiedzieć gdzie wstawić <br /> skoro nie wie gdzie tekst w danej linii sie zakończy?
Jedyna rada jest taka by pisać tekst w miare dokładnie.
Pozdro
zombie
3.05.2004, 23:05:45
no niekoniecznie. można by spróbować każdą spację po znaku krótszym, niż 3 znaki zamienić na ' '. Zawsze będą wtedy zrzucane o linijkę niżej... Chyba lepsze bedzie [manual:bc7b1f521b]preg_match[/manual:bc7b1f521b], niż [manual:bc7b1f521b]explode[/manual:bc7b1f521b]
Bakus
3.05.2004, 23:22:03
Ja w jednym ze skryptów zrobiłem zamianę przez:[php:1:1aada83098]<?php
$wp = str_replace(' w ', ' w ', $wp);
$wp = str_replace(' z ', ' z ', $wp) ;
$wp = str_replace(' i ', ' i ', $wp);
$wp = str_replace(' a ', ' a ', $wp);
?>[/php:1:1aada83098]Wiem, że jest to mało wydajne, ale jest proste, czytelne i daje oczekiwane rezultaty...
Powinno być szybciej
[php:1:3a39f7bb1d]<?php
$from=array(' w ',' z ',' i ',' a ');
$to=array(' w ',' z ',' i ',' a ');
$wp = str_replace($from, $to, $wp);
?>[/php:1:3a39f7bb1d]
Bakus
3.05.2004, 23:50:00
Przy moim rozwiązaniu skrypt wykonuje się w czasie 0.08-0.09 a przy twoim 0.07-0.08

rzeczywiście wielka róźnica
zombie
3.05.2004, 23:56:56
... z tym, że ta metoda nie daje pewności. poza tym brakuje mi tu 'o', 'u', 'na', 'po', 'do', 'od' ... właściwie może sie pojawić każda litera. Np. 'A. Kwaśniewski'
oczywiście że będzie to niewielka różnica ale zawsze powinno sie pisać żeby było jak najszybciej

P
zresztą dopisując nowe elementy nie powoduje że po raz któryś odpala sie to str_replace

P.
Bakus
4.05.2004, 03:09:43
z kolei przy większej ilości fraz do zamiany (co zasugerował zombie) wpisywanie tego w 2 tablice może spowodować, przy odrobinie nieuwagi kraksę...
lepiej z punktu widzenia czytelności i łatwości zarządzania zrobić to tak:[php:1:ba1d5f7dfb]<?php
$klucze = array( // tablica z tym co mamy zamieniać
" w " => " w ",
" z " => " z ",
" i " => " i ",
" a " => " a "
);
$co = $naco = array(); //tablice robocze
while (list ($key, $val) = each ($klucze))
{ // przepisujemy tablice do innej formy
$co[] = $key;
$naco[] = $val;
}
unset($klucze); // tablica klucze nie jest już potrzebna... mamy 2 nowe tablice...
// zamieniamy co trza
$wp = str_replace($co, $naco, $wp);
?>[/php:1:ba1d5f7dfb]Taką tablicę można łatwo uzupełniać i jest ona czytelna...

Chyba poprawie to u siebie na takie...
O... Właśnie... Można całość kodu jaki napisałem wrzucić do funkcji i uzupełnić o brakujące pozycje i będzie to można dołączać do bibliotek funkcji w skryptach, gdzie możliwe jest wprowadzanie tekstów...
zalew
4.05.2004, 05:20:51
jest 6rano a nie spalem i jeszcze mam robote, a wiec stac mnie jedynie na pseudokod.. bo pomysl mi sie wydaje ciekawy, wiec oto moja spiaca koncepcja rozwiazania ;)..
[php:1:9e7d942c80]<?php
$exp = 70; //przewidywana liczba liter w linijce
$drops = array ('w', 'z'....); // tablica slow do zrzucenia
function dropSingles ($exp, $drops) {
$lines = 'sth'; /*
tablica z rozbicia calego tekstu na co 70 znakow
plus opcja ze co natkniecie na nowy akapit czyli <p> lub <br> resetuje, zeby nie pokielbasilo... nie jestem w stanie teraz napisac jej dzialania
*/
for ($i=0; $i<count($lines); $i++) {
$words = explode(' ', $lines[$i]);
$lastWord = $words[count($words)];
/* lapie ostatnie slowo i sprawdza czy jest jednym z szukanych przyimkow
jak tak to zastepuje*/
if (in_array($lastWord, $drops ) {
$words[count($words)] = "<br />".$lastWord;
}
$newTxt .= implode($words, ''); //skaldamy znow txt do kupy
}
return $newTxt;
}
?>[/php:1:9e7d942c80]
penwie sa bledy ale moze udalo mi sie przedstawic zamysl :)
grzesgracz
4.05.2004, 09:18:06
Wielkie dzieki wszystkim za pomoc, widze, ze jest z czego wybierac (choc liczylem na to, ze sa gotowe funkcje w css, albo php

)
Mysle jednak, ze cos uda mi sie z tego stworzyc
A moze ma ktos jeszcze inne pomysly?
Cytat
z kolei przy większej ilości fraz do zamiany (co zasugerował zombie) wpisywanie tego w 2 tablice może spowodować, przy odrobinie nieuwagi kraksę...
lepiej z punktu widzenia czytelności i łatwości zarządzania zrobić ....
Cytat
string [manual:f8d82ef413]strtr [/manual:f8d82ef413]( string str, array replace_pairs)
[php:1:f8d82ef413]<?php
$trans = array("hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
?>[/php:1:f8d82ef413]
Cytat
Taką tablicę można łatwo uzupełniać i jest ona czytelna...
Nie łatwiej tak (pomijając ten
strtr
) ?
[php:1:82cb84871b]<?php
$wp = str_replace(array_keys($klucze), array_values($klucze), $wp);
?>[/php:1:82cb84871b]
grzesgracz
4.05.2004, 21:22:46
Myślę, że przydałoby się coś, co zamieniałoby w kazdym tekscie frazy typu: "cos tam z czyms innym" na "cos tam z czyms innym" prawda?
To zalatwiloby sprawe.
Pozdrawiam
Gonzo
5.05.2004, 15:44:16
Jak na razie to każdy próbuje tylko inaczej zrobić (czytaj: zapisać) dokładnie to samo

. Hehe, moim zdaniem raczej dużo tutaj nikt nie wykombinuje, jeżeli nie użyjesz czcionki monotypicznej.
BTW: po co ci w ogóle coś takiego :?: Wydaje mi się, że we własnym serwisie nie jest ważna aż taka zabawa w 'literki'. Owszem, ortografia, interpunkcja, język... Ale bez przesady

. Nie piszesz w końcu do urzędu

.
grzesgracz
5.05.2004, 15:49:08
Robie oficjalna strone jednego z polskich artystow... (ostatnio BARDZO popularnego)
Polonistki z UJ, ktore m.in. Go uwielbiaja upominaja sie o to

wiec chcialem cos takiego sprobowac...
Tak swoja droga, to nie wierzylem, ze nie ma gotowej funkcji w zadnym jezyku, ktora by na takie rzeczy zwazala...
Dzieki, za pomoc
PS: Na pewno nasuwa sie pytanie: czyja to strona?

hehehe, jak skoncze, dam znac, choc juz powoli w sieci krazy...
Gonzo
5.05.2004, 17:55:40
No wiesz... Ja to bym się
zdziwił, jeżeli coś takiego by istniało... Przecież parser wyrzuca ci po prostu zwykły tekst. php wcale nie interesuje, jak to będzie wyglądało w przeglądarce (przecież to dopiero ona następnie interpretuje otrzymany kod).
Mi się podoba pomysł
Zalewa. Jeśli bardzo zależy ci na osiągnięciu tego efektu, może spróbuj użyć tego kodu (po kilku przeróbkach

).
3m się, chętnie zobaczę tą stronkę
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.