Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenie regularne - ereg_replace
Rzepa
post 14.05.2004, 08:42:37
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 13.01.2004

Ostrzeżenie: (0%)
-----


hej,

Potrzebne mi wyrażenie regularne które do każdej linii tekstu doda tyle spacji, żeby każda linia miała określoną długość (powiedzmy x).
Jednym z pomysłów jakie mam na rozwiązanie tego problemu, to dodawanie po jednej spacji do linii zawierających mniej niż x znaków i puszczenie tego w pętli, aż wszystkie linie się wyrównają, ale wolałbym takie rozwiązanie, które nie wymaga użycia pętli - żeby dało się go użyc w edytorze tekstu. Zakładamy, że na początku wszystkie linie mają <= x znaków.

Pozdrowienia i z góry dzięki za pomysły.

Rzepa.
Go to the top of the page
+Quote Post
cichy
post 14.05.2004, 08:56:38
Post #2





Grupa: Przyjaciele php.pl
Postów: 197
Pomógł: 0
Dołączył: 9.09.2003
Skąd: z Marsa

Ostrzeżenie: (0%)
-----


Nie wiem jak by wyglądał ereg lub preg ale mam funkcje któa nie używa do tego pętli:

[php:1:2d67f4a452]<?php
function text( $text, $length, $add = "n")
{
$text = trim( $text );
$strlen = strlen( $text );

if( $strlen < $length )
{
$text .= str_repeat( ' ', $length - $strlen) . $add;
return $text;
}
else
{
return $text."n";
}
}

$tekst = 'cos';
echo text($tekst, 10);
?>[/php:1:2d67f4a452]

Jeśli chcesz zamienić w całym pliku wystarczy że zrobisz to w pętli
bo ta funkcja przyjmuje $text jako jedną linie pliku smile.gif
Pozdro
Go to the top of the page
+Quote Post
FiDO
post 14.05.2004, 09:29:11
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

Ostrzeżenie: (0%)
-----


Po co wymyslac kolo drugi raz?
Taka funkcja juz istnieje :arrow: [manual:bbacdbf3a2]str_pad[/manual:bbacdbf3a2]


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
scanner
post 14.05.2004, 09:31:22
Post #4





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




RTFM: [manual:9a1a7b7462]str_pad[/manual:9a1a7b7462]


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
evo
post 14.05.2004, 09:32:01
Post #5





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 4.02.2003

Ostrzeżenie: (0%)
-----


[manual:59595ead04]str_pad[/manual:59595ead04]



Pozdrawiam
evo
Go to the top of the page
+Quote Post
evo
post 14.05.2004, 09:33:27
Post #6





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 4.02.2003

Ostrzeżenie: (0%)
-----


ale sie rzucili..hehehe....stukupuku biggrin.gif
Go to the top of the page
+Quote Post
Rzepa
post 14.05.2004, 09:37:06
Post #7





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 13.01.2004

Ostrzeżenie: (0%)
-----


Dzieki, to na pewno zadziała, ale mi zależy właśnie na wyrażeniu regularnym.
Może spróbuję sformułować problem inaczej:
Wiem, że w wyrażeniu regularnym można określić maksymalną i minimalną ilość wystąpień wzorca. Czy można zatem dowiedzieć się ile razy wzorzec faktycznie wystąpił, aby zastosować tę liczbę w wyrażeniu zastępującym?

pozdr.

Rzepa.
Go to the top of the page
+Quote Post
scanner
post 14.05.2004, 09:52:07
Post #8





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




No to to juz są dwa odmiene problemy.,
Chcesz wyrównać długośc linii, czy policzyć substringi?


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
evo
post 14.05.2004, 09:57:06
Post #9





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 4.02.2003

Ostrzeżenie: (0%)
-----


Cytat
Wiem, że w wyrażeniu regularnym można określić maksymalną i minimalną ilość wystąpień wzorca. Czy można zatem dowiedzieć się ile razy wzorzec faktycznie wystąpił, aby zastosować tę liczbę w wyrażeniu zastępującym?

Cytat
Wiem, ze w wyrazeniu regularnym mozna okreslic maksymalna i minimalna ilosc wystapien wzorca. Czy mozna zatem dowiedziec sie ile razy wzorzec faktycznie wystapil, aby zastosowac te liczbe w wyrazeniu zastepujacym?


okreslajac minimum i maks wzorca masz maske do ktorej bedziesz dopasowywal Stringi. W wyrazeniach nie masz mozliwosci liczyc ilosci znakow! Mozesz je wyrazeniem wyciac i policzyc strlen().

maske definuiesz poprzez podanie znaku czy zbioru oraz {min,maks}

Np:

[php:1:cf4baf91b7]<?php
$str='jakis string i znak xxxxxxxxxxx a tu dalej jakis string pixi dixi itd...';
?>[/php:1:cf4baf91b7]

i teraz chcesz sie dowiedziec ile razy wystapil x lecz nie ogolnie w stringu a kolo siebie

[php:1:cf4baf91b7]<?php
if(preg_match('|x{2,}|i',$str,$m))echo strlen($m[0]);
?>[/php:1:cf4baf91b7]


O to ci chodzi?



pozdrawiam
evo
Go to the top of the page
+Quote Post
Rzepa
post 14.05.2004, 10:10:46
Post #10





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 13.01.2004

Ostrzeżenie: (0%)
-----


no, generalnie na to wychodzi, że tak. chciałem zastosować wyrażenie bez użycia php - w edytorze tekstowym który umożliwia stosowanie wyrażeń regularnych do wyszukiwania i zastępowania fragmentów tekstu, ale wychodzi na to, że jednak bez kodu się nie obejdzie... sad.gif
powinienem był to wyraźnie zaznaczyć w pierwszym poście - przepraszam, że tego nie zrobiłem.

Pozdrawiam i dzięki,

Rzepa.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.07.2025 - 22:05