Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenie regularne - ereg_replace
Forum PHP.pl > Forum > PHP
Rzepa
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.
cichy
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
FiDO
Po co wymyslac kolo drugi raz?
Taka funkcja juz istnieje :arrow: [manual:bbacdbf3a2]str_pad[/manual:bbacdbf3a2]
scanner
RTFM: [manual:9a1a7b7462]str_pad[/manual:9a1a7b7462]
evo
[manual:59595ead04]str_pad[/manual:59595ead04]



Pozdrawiam
evo
evo
ale sie rzucili..hehehe....stukupuku biggrin.gif
Rzepa
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.
scanner
No to to juz są dwa odmiene problemy.,
Chcesz wyrównać długośc linii, czy policzyć substringi?
evo
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
Rzepa
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.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.