Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenie regularne
Forum PHP.pl > Forum > PHP
spenalzo
Hm..
Trafiłem na niezłą zagwozdke - powiedzmy że chce sprawdzić czy jakiś warunek pasuje do podanych zmiennych, np.
[php:1:3f520c7c7b]<?php
$ks="speniu";
$ip="80.50.89.141";
?>[/php:1:3f520c7c7b]
i teraz przydałoby się takie wyrażenie regularne, które dla takich np. wartości zwracałoby true lub false
Kod
s?en?u@80.5?.* // TRUE

*!*spe?questionmark.gif?@* // FALSE

*@80.5?.?9.1?1 // TRUE

czyli jednym słowem, czy dana maska może pasować do danych zmiennych.

uf, ale zakręciłem. rolleyes.gif
evo
8O :? ja tu nie widze zadnego schematu, systemacznosci :?:
dooshek
Cytat
Hm..
Trafiłem na niezłą zagwozdke - powiedzmy że chce sprawdzić czy jakiś warunek pasuje do podanych zmiennych, np.
[php:1:a05005b612]<?php
$ks="speniu";
$ip="80.50.89.141";
?>[/php:1:a05005b612]
i teraz przydałoby się takie wyrażenie regularne, które dla takich np. wartości zwracałoby true lub false
Kod
s?en?u@80.5?.* // TRUE

*!*spe?questionmark.gif?@* // FALSE

*@80.5?.?9.1?1 // TRUE

czyli jednym słowem, czy dana maska może pasować do danych zmiennych.

uf, ale zakręciłem. rolleyes.gif


Yhmm, moze napisz co chcesz zrobic...
spenalzo
Mam dwie zmienne:
[php:1:337fed09c3]<?php
$ks="speniu";
$ip="80.50.89.141";
?>[/php:1:337fed09c3]

Kod
s?en?u@80.5?.* // TRUE

*!*spe?questionmark.gif?@* // FALSE

*@80.5?.?9.1?1 // TRUE


Chciałbym znaleźć czy taka maska może się pojawić i jeżeli tak, to wyciągnąć ją ze stringu.
BzikOS
Cytat
Yhmm, moze napisz co chcesz zrobic...

Spenalzo chce napisać wyrażenie, które będzie sprawdzało, czy adres speniu@80.50.89.141 będzie pasował do różnych wariantów masek. Czyli coś takiego:

[php:1:a67d9e7a2f]<?php
$adres = "speniu@80.50.89.141";
$maska = "s?en?u@80.5?.*";

$rezultat = preg_match($adres, $maska);
?>[/php:1:a67d9e7a2f]

No i oczywiście maska musi być odpowiednio przygotowana w krzaczki wyrażeń regularnych, które tylko adwol rozumie tongue.gif
evo
no i w czym problem? w wyrazeniu? przeciez je ma...bo jesli chce inne to niech schemat poda
spenalzo
Cytat
no i w czym problem? w wyrazeniu? przeciez je ma...bo jesli chce inne to niech schemat poda

Mam tylko numer IP i ksywke - i chce sprawdzić czy dane IP i ksywa pasuje do danej maski, takiej jak na przykładzie powyżej.
adwol
Co, robisz tuning bota? winksmiley.jpg
Zainteresuj się funkcją fnmatch. Ona dopasowuje łańcuchy w/g regexpów shellowych (czyli takich jak są m.in. w ircu). W komentarzach jest też funkcja, która przerabia takie regexpy na perlowe.
spenalzo
Cytat
Co, robisz tuning bota? winksmiley.jpg

Ależ skąd laugh.gif tongue.gif
Cytat
Zainteresuj się funkcją fnmatch.

No niestety - php 4.3.0 sad.gif
adwol
Cytat
No niestety - php 4.3.0 sad.gif

A ta funkcja do przerabiania regexpoów shellowych na perlowe też Ci nie odpowiada?

Poza tym, chyba najwyższy czas zrobić upgrade. 4.3.x już jest chyba na tyle długo, że można je uznać za stabilne.
s_w_ir
Chwila nie wiem czy dobrze kapuje, ale jeśli tak to nie moż na by tego wpakopwać do funkcji i napisać kilka wyrażeń warunkowych każda z innaczej sprawdzająca[php:1:a3ff226940]<?php
function cosi(){
if(ereg(kod)) echo "$kod";
if(ereg(kod)) echo "$kod";
if(ereg(kod)) echo "$kod";
}
?>[/php:1:a3ff226940]
BzikOS
Można by, ale jest ogromna liczba możliwości. A przecież od tego są regexpy (jesli się je umie).
s_w_ir
Myślałem że chodzi tylko o te trzy możliwości a o tych regexpach to wogóle nie słyszałem:)
spenalzo
regexp = regular expressions = wyrażenia regularne
s_w_ir
A ja już myślałem że będe mógł się nauczyć nowych zakręconych funkcji:) Kurcze...
BzikOS
OK, chyba się udało biggrin.gif

[php:1:a4396f5cf2]<?php
$adres = "nick@212.55.45.2";
$maska = "*!*nick@80.questionmark.gif.45.*";

print(preg_match(toPreg($maska), $adres));

function toPreg($maska) {
$tempArr1 = Array('.', '*!*', '*', '?');
$tempArr2 = Array('.', '*', '.*', '.');

$maska = str_replace($tempArr1, $tempArr2, $maska);
Return '/^' . $maska . '$/i';
}
?>[/php:1:a4396f5cf2]
s_w_ir
Wiem że nic nie wiem, ale gdzie tu jest jakieś wyrażenie regularne? no chyba że ten preg...
FiDO
funkcja toPreg() takowe zwraca
s_w_ir
okej to ja się poducze a narazie nie przeszkadzam w poważnych kodach.
evo
Cytat
Mam tylko numer IP i ksywke - i chce sprawdzić czy dane IP i ksywa pasuje do danej maski, takiej jak na przykładzie powyżej.


ok. Jasne.

Wiec napisz jak ma ta maska wygladac! najakich warunkach ma sie opierac winksmiley.jpg
spenalzo
http://forum.php.pl/viewtopic.php?p=46736#46736
smile.gif
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.