Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenie regularne - ereg_replace
Rzepa
post
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
 
Start new topic
Odpowiedzi
evo
post
Post #2





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

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 18:11