![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 28.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Chodzi o przetwarzanie wyrazen regularnych w php (opartych o perla). mianowicie:
(IMG:http://siwego.net/regexpsiw.jpg) probowalem setek patterns ale ciagle jestem w klopie dla #1 nie chodza: Kod '/\..+$/' '/\..+?$/' '/\..+?(?!\.)$/' \ tak to jest wyprzedzajacy znak, tylko nie wiem czy logika tego nie odwrocila sie poprzez $ dla #2 Kod $replace = '/\.[\w\W]+$/'; $with = ''; preg_replace($replace,$with,$str); (narazie jeszcze bez zwracania wartosci poprawnych -alphanumerycznych) a i tak zle inne: Kod '/\.[\w\W^\.]+$/' '/\.[\w\W^\.]+?$/' '/\.[\w\W[^\.]]+?$/' '/\.[\w[\W[^\.]]]+?$/' '/\.[\w\W&&[^\.]]]+?$/' //&& chodzace w javie, ale raczej nie w php '/\.(?:\w|\W)+$/' //lub nawet bez [] '/\.(?:\w?|\W?)+$/' pierwszy zamysl ze zwracaniem: Kod '/\.[(\w)\W^\.]+?$/' '/\.(?:\(w?)|\W?)+$/' $replacer = '\.$1'; czy mialby ktokolwiek jakis pomysl jak to rozwiazac? pozdrawiam michal rozwiazalem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) nie wiedzialem ze mozna zagniezdzac funkcje w parametrach funkcji! wczesniej obilo mi sie w jawie odpowiedniku ale bylem blednie przekonany ze tu to niemozliwe. Kod <?php $replace = array('/[\[\{]/', '/[\]\}]/', //zamienic nawiasy [] {} na () '/(.*)\.(.*)$/e', //sformatowac rozszerzenie '/[^\w\s\(\)\-`\.,;\+=#&!]|'. //zezwolic w nazwie pliku na _ -() `,.;+=!&# '^[\s\.,;]*[!&\-#]+[\s,;!&\-#]*/', //sformatowac zjadliwy poczatek '/^[\s\.,;]+|\s+(?=\s.)/'); //przyciac i skrocic wielokrotne spacje $with = array('(',')',"trim('$1').'.'.preg_replace('~[\W]~','','$2')",'_',''); printt ('file|'.preg_replace($replace,$with,$str).'|'); //wlasna do wyrzucania wynikow na ekran ?> (IMG:http://siwego.net/regexpsiw2.jpg) thx Ten post edytował s1w 28.04.2009, 20:42:50 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
A musisz to koniecznie na wyrażeniach regularnych robić? Bo kombinujesz, jak koń pod górę, a tymczasem:
#1: Kod $text = substr($text, 0, ( ($id = strrpos('.', $text) ) !== false ? $id, strlen($text)); #2: Kod $buffer = '';
for($i = strlen($text) - 1; $i >= 0; $i--) { if($text[$i] == '.') { $buffer = substr($text, 0, $i).strrev($buffer); break; } elseif(ctype_alnum($text[$i])) { $buffer .= $text[$i]; } } |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 05:19 |