U E D R , A S I H C RSS

Linux/Regular Expression


1. †Œœ

๋ฆฌ๋ˆ…Šค™€ ฐ™€ œ ‹‰Šค˜ ด๋ก  šด˜ฒด œ๋ฅผ •˜‹ค๋ณด๋ฉด ๋ฐ˜๋“œ‹œ ˜€••  ฒƒ๋“คด ๋ช‡ฐ€ง€ กดžฌ•œ‹ค.
 •œ‹ด๋ผ๋Š” ฒƒ๋„ ‘˜ •œฐ€ง€ด๋‹ค.
๋Œ€ถฉ šฉ๋„๋ฅผ  –ด๋ณดž๋ฉด MS‹œŠค…œ—„œ˜ *(asterix)๋ฌธž™€ ฐ™€ šฉ๋„  ๋ณด๋ฉด๋œ‹ค.

ฑฐ˜ ๋Œ€๋ถ€๋ถ„˜ œ ‹‰Šค • ”Œ๋ฆฌผ€…˜€  •œ‹˜ ‚ฌšฉ„ ง€›•œ‹ค. ผ๋‹จ ๋ฐฐšฐ๋ฉด “ฐž„ด ๋Œ€๋‹•˜ง€๋งŒ
žˆธฐ €ฐฎ๋‹ค. -.-;

2. Mastering Regular Expressions, 2nd Edition

2.1. Ch1 Introduction to Regular Expressions

  • ^(caret) : ‹œž‘„ ˜๋ฏธ•จ. ^cat€ catœผ๋กœ ‹œž‘•˜๋Š” ๋ฌธž...(cats,cater,caterer...).in the line rather real text
  • $(dollar) : ๋„ ˜๋ฏธ•จ. cat$€ catœผ๋กœ ๋๋‚˜๋Š” ๋ฌธž ...(blackcat, whitecat, ....) in the line rather real text
  • [](Character Class) : seperaete •˜๋ฉด seperate, seperete ๋ชจ๋‘๋ฅผ ฌ••œ‹ค.
    • - (dash) : ๋ฒ”œ„๋ฅผ ๋‚˜ƒ€๋‚ธ๋‹ค.([]•ˆ—„œ๋งŒ.. ๋ฐ–—„œ๋Š” '-'žฒด๋ฅผ ฐ€๋ฆฌ‚จ๋‹ค) 1-6 1~6นŒง€
    • ^ : [] •ˆ—„œ๋Š” ๋ฐ˜๋Œ€๋ฅผ ๋œ•œ‹ค. ^1-6 € 1~6•„‹Œฒƒ๋“ค„ ˜๋ฏธ..
  • . (dot) : –ด๋–ค ๋ฌธž๋“  ธฐ˜ธ๋“  •ด๋‹น๋œ‹ค. 03.19.76 •˜๋ฉด 03/19/76,03-19-76,03.19.76 ๋“ฑ•ด๋‹น๋œ‹ค.
  • (OR) : —ฌ๋Ÿฌœ˜ ‹„ •œœ˜ ‹œผ๋กœ •„•  ˆ˜ žˆ๋‹ค. []•ˆ—„œ๋Š”
    ด ๋ฌธž๋ฅผ ฐ€๋ฆฌ‚ฌ ๋ฟด๋‹ค. greay, grey|gray,gr(a|e)y ๋Š” ฐ™๋‹ค.
  • ()(parentheses) : a(a|b)cde •˜๋ฉด aacde, abcde ๋‘˜‹•ด๋‹น ๋œ‹ค. b•˜๋ฉด | ๋ฅผ ๋ฌธž๋กœ ˜๋ฆฌ •˜ง€๋งŒ (a|b) ๋กœ ()๋ฅผ ”Œ–ด ฃผ๋ฉด |๋ฅผ OR๋กœ •„•œ‹ค.
  • -i(option) : ๋Œ€†Œ๋ฌธž ตฌ๋ถ„„ •ˆ•œ‹ค. ˜ˆ)egrep -i '^(From|Subject|Date): ' mailbox
  • \< : ๋‹จ์–ด๊ฐ€ ์‹œ์ž‘๋˜๋Š” ์ง€์ 
  • \> : ๋‹–ดฐ€ ๋๋‚˜๋Š” ง€ 
  • ? : one optional, ? •ž— žˆ๋Š” ธ€žฐ€ žˆ–ด๋„ ๋˜  —†–ด๋„ ๋œ‹ค. colour •˜๋ฉด color, colur ๋ชจ๋‘ ๋œ‹ค.
  • * : ? ฐ€ —ฌ๋Ÿฌœ(ž„˜˜ œˆ˜) žˆ๋Š” šจณผ (—†๋Š”ฒƒ๋„ ฌ•จ)
  • + : ? ฐ€ —ฌ๋Ÿฌœ(ž„˜˜ œˆ˜) žˆ๋Š” šจณผ

3.  •œ‹ ŽŒ ๋‚ดšฉ

(1) ^ (caret) : ๋˜ ˜Œด๋‚˜ ๋ฌธž—ด˜ ˜Œ„ ‘œ‹œ

˜ˆ : ^aaa (๋ฌธž—ด˜ ˜Œ— aaa๋ฅผ ฌ••˜๋ฉด ฐธ, ธ๋ ‡ง€ •Šœผ๋ฉด ฑฐง“)

(2) $ (dollar) : ๋˜ ๋ด๋‚˜ ๋ฌธž—ด˜ ๋„ ‘œ‹œ

˜ˆ : aaa$ (๋ฌธž—ด˜ ๋— aaa๋ฅผ ฌ••˜๋ฉด ฐธ, ธ๋ ‡ง€ •Šœผ๋ฉด ฑฐง“)

(3) . (period) : ž„˜˜ •œ ๋ฌธž๋ฅผ ‘œ‹œ

˜ˆ : ^a.c (๋ฌธž—ด˜ ˜Œ— abc, adc, aZc ๋“ฑ€ ฐธ, aa ๋Š” ฑฐง“)

a..b$ (๋ฌธž—ด˜ ๋— aaab, abbb, azzb ๋“ฑ„ ฌ••˜๋ฉด ฐธ)

(4) [] (bracket) : ๋ฌธž˜ ‘•ด๋‚˜ ๋ฒ”œ„๋ฅผ ๋‚˜ƒ€๋ƒ„, ๋‘ ๋ฌธž ‚ฌ˜ "-"๋Š” ๋ฒ”œ„๋ฅผ ๋‚˜ƒ€๋ƒ„

[]๋‚ด—„œ "^"„ –‰๋˜๋ฉด not„ ๋‚˜ƒ€๋ƒ„

™ธ—๋„ "๋ฌธžด๋ž˜Šค"๋ฅผ ฌ••˜๋Š” [:๋ฌธžด๋ž˜Šค:]˜ ˜•ƒœฐ€ žˆ๋‹ค.

—ฌธฐ—„œ "๋ฌธžด๋ž˜Šค"—๋Š” alpha, blank, cntrl, digit, graph, lower,

print, space, uppper, xdigitฐ€ žˆ๋‹ค.

— ๋Œ€•œ ž„•œ ๋‚ดšฉ€ C–ธ–ด˜ <ctype.h>๋ฅผ ฐธกฐ•˜๋ฉด ๋œ‹ค.

˜ˆ๋ฅผ ๋“ค–ด [:digit:]๋Š” [0-9]™€ [:alpha:]๋Š” [A-Za-z]™€ ๋™•˜‹ค.

™ธ— [:<:]™€ [:>:]๋Š” –ด๋–ค ๋‹–ด(ˆซž, •ŒŒŒ๋ฒณ, '_'๋กœ ตฌ„ฑ๋จ)˜ ‹œž‘ณผ ๋

„ ๋‚˜ƒ€๋‚ธ๋‹ค.

˜ˆ : [abc] (a, b, c ‘ –ด๋–ค ๋ฌธž, "[a-c]."ณผ ๋™ผ)

[Yy] (Y ๋˜๋Š” y)

[A-Za-z0-9] (๋ชจ๋“  •ŒŒŒ๋ฒณณผ ˆซž)

[-A-Z]. ("-"(hyphen)ณผ ๋ชจ๋“  ๋Œ€๋ฌธž)

[^a-z] (†Œ๋ฌธž ™ธ˜ ๋ฌธž)

[^0-9] (ˆซž ™ธ˜ ๋ฌธž)

[[:digit:]] ([0-9]™€ ๋™ผ)

(5) {} (brace) : {} ๋‚ด˜ ˆซž๋Š” ง „˜ „ –‰๋ฌธžฐ€ ๋‚˜ƒ€๋‚˜๋Š” šŸˆ˜˜๋Š” ๋ฒ”œ„๋ฅผ ๋‚˜ƒ€๋ƒ„

˜ˆ : a{3} ('a'˜ 3๋ฒˆ ๋ฐ˜๋ณตธ aaa๋งŒ •ด๋‹น๋จ)

a{3,} ('a'ฐ€ 3๋ฒˆ ƒ ๋ฐ˜๋ณตธ aaa, aaaa, aaaa, ... ๋“ฑ„ ๋‚˜ƒ€๋ƒ„)

a{3,5} (aaa, aaaa, aaaaa ๋งŒ •ด๋‹น๋จ)

ab{2,3} (abb™€ abbb ๋งŒ •ด๋‹น๋จ)

[0-9]{2} (๋‘ ž๋ฆฌ ˆซž)

doc[7-9]{2} (doc77, doc87, doc97 ๋“ฑ•ด๋‹น)

[^Zz]{5} (Z™€ z๋ฅผ ฌ••˜ง€ •Š๋Š” 5œ˜ ๋ฌธž—ด, abcde, ttttt ๋“ฑ•ด๋‹น)

.{3,4}er ('er'•ž— „œ˜๋Š” ๋„œ˜ ๋ฌธž๋ฅผ ฌ••˜๋Š” ๋ฌธž—ดด๋ฏ€๋กœ Peter, mother ๋“ฑ•ด๋‹น)

(6) * (asterisk) : "*" ง „˜ „ –‰๋ฌธžฐ€ 0๋ฒˆ ๋˜๋Š” —ฌ๋Ÿฌ๋ฒˆ ๋‚˜ƒ€๋‚˜๋Š” ๋ฌธž—ด

˜ˆ : ab*c ('b'๋ฅผ 0๋ฒˆ ๋˜๋Š” —ฌ๋Ÿฌ๋ฒˆ ฌ••˜๋ฏ€๋กœ ac, ackdddd, abc, abbc, abbbbbbbc ๋“ฑ)

* („ –‰๋ฌธžฐ€ —†๋Š” ฒฝšฐด๋ฏ€๋กœ ž„˜˜ ๋ฌธž—ด ๋ฐ ณต๋ฐฑ ๋ฌธž—ด๋„ •ด๋‹น๋จ)

.* („ –‰๋ฌธžฐ€ "."ด๋ฏ€๋กœ •˜๋‚˜ ƒ˜ ๋ฌธž๋ฅผ ฌ••˜๋Š” ๋ฌธž—ด, ณต๋ฐฑ ๋ฌธž—ด€ •ˆ๋จ)

ab* ('b'๋ฅผ 0๋ฒˆ ๋˜๋Š” —ฌ๋Ÿฌ๋ฒˆ ฌ••˜๋ฏ€๋กœ a, accc, abb, abbbbbbb ๋“ฑ)

a* ('a'๋ฅผ 0๋ฒˆ ๋˜๋Š” —ฌ๋Ÿฌ๋ฒˆ ฌ••˜๋ฏ€๋กœ k, kdd, sdfrrt, a, aaaa, abb, ณต๋ฐฑ๋ฌธž—ด ๋“ฑ)

doc[7-9]* (doc7, doc777, doc778989, doc ๋“ฑ•ด๋‹น)

[A-Z].* (๋Œ€๋ฌธž๋กœ๋งŒ ด๋ฃจ–ด„ ๋ฌธž—ด)

like.* (ง „˜ „ –‰๋ฌธžฐ€ '.'ด๋ฏ€๋กœ like— 0 ๋˜๋Š” •˜๋‚˜ ƒ˜ ๋ฌธžฐ€ ถ”ฐ€๋œ ๋ฌธž—ดด ๋จ, like, likely, liker, likelihood ๋“ฑ)

(7) + (asterisk) : "+" ง „˜ „ –‰๋ฌธžฐ€ 1๋ฒˆ ƒ ๋‚˜ƒ€๋‚˜๋Š” ๋ฌธž—ด

˜ˆ : ab+c ('b'๋ฅผ 1๋ฒˆ ๋˜๋Š” —ฌ๋Ÿฌ๋ฒˆ ฌ••˜๋ฏ€๋กœ abc, abckdddd, abbc, abbbbbbbc ๋“ฑ, ac๋Š” •ˆ๋จ)

ab+ ('b'๋ฅผ 1๋ฒˆ ๋˜๋Š” —ฌ๋Ÿฌ๋ฒˆ ฌ••˜๋ฏ€๋กœ ab, abccc, abb, abbbbbbb ๋“ฑ)

like.+ (ง „˜ „ –‰๋ฌธžฐ€ '.'ด๋ฏ€๋กœ like— •˜๋‚˜ ƒ˜ ๋ฌธžฐ€ ถ”ฐ€๋œ ๋ฌธž—ดด ๋จ, likely, liker, likelihood ๋“ฑ, ธ๋Ÿฌ๋‚˜ like๋Š” •ด๋‹•ˆ๋จ)

[A-Z]+ (๋Œ€๋ฌธž๋กœ๋งŒ ด๋ฃจ–ด„ ๋ฌธž—ด)

(8) ? (asterisk) : "?" ง „˜ „ –‰๋ฌธžฐ€ 0๋ฒˆ ๋˜๋Š” 1๋ฒˆ ๋‚˜ƒ€๋‚˜๋Š” ๋ฌธž—ด

˜ˆ : ab?c ('b'๋ฅผ 0๋ฒˆ ๋˜๋Š” 1๋ฒˆ ฌ••˜๋ฏ€๋กœ abc, abcd ๋งŒ •ด๋‹น๋จ)

(9) () (parenthesis) : ()๋Š”  •œ‹๋‚ด—„œ Œจ„„ ธ๋ฃน™” • •Œ ‚ฌšฉ

(10) | (bar) : or๋ฅผ ๋‚˜ƒ€๋ƒ„

˜ˆ : a|b|c (a, b, c ‘ •˜๋‚˜, ฆ‰ [a-c]™€ ๋™•จ)

yes|Yes (yes๋‚˜ Yes ‘ •˜๋‚˜, [yY]es™€ ๋™•จ)

korea|japan|chinese (korea, japan, chinese ‘ •˜๋‚˜)

(11) \ (backslash) : œ„—„œ ‚ฌšฉ๋œ Šนˆ˜ ๋ฌธž๋“ค„  •œ‹๋‚ด—„œ ๋ฌธž๋ฅผ ธ‰•˜  ‹„•Œ '\'๋ฅผ „ –‰‹œœ„œ ‚ฌšฉ•˜๋ฉด๋จ

˜ˆ : filename\.ext ("filename.ext"๋ฅผ ๋‚˜ƒ€๋ƒ„)

[\?\[\\\]] ('?', '[', '\', ']' ‘ •˜๋‚˜)


 •œ‹—„œ๋Š” œ„—„œ –ธธ‰•œ Šนˆ˜ ๋ฌธž๋ฅผ  œ™ธ•œ ๋‚˜๋จธง€ ๋ฌธž๋“ค€ ผ๋ฐ˜ ๋ฌธž๋กœ ธ‰• •œ‹€ Unix˜ ๋Œ€‘œ œ ‹ธ๋ฆฌ‹ธ vi, emacs, ed, sed, awk, grep, egrep ๋“ฑ—„œ ‚ฌšฉ•  ˆ˜ žˆ๋‹ค. ๋‹Œ€ grep—„œ  •œ‹„ ™œšฉ•œ ˜ˆ๋ฅผ ๋ณด—ฌ ฃผ  žˆ๋‹ค.

(1) $ ๋ช…๋ –ด | grep ' •œ‹'

<= ๋ช…๋ –ด˜ ฒฐณผ๋ฅผ grepž…๋ ฅ๋ฐ›•„  •œ‹„ šฉ•˜—ฌ Œจ„„ ฐพ•„๋ƒ„

˜ˆ : $ who | grep 'hgkim' <= hgkimด๋ผ๋Š” ‚ฌšฉžฐ€ login •žˆ๋Š”ง€๋ฅผ •Œ•„๋ด„

$ ls -al | grep '^d.*' <= ls -al ˜ ฒฐณผ 'd'๋กœ ‹œž‘•˜๋Š” ๋ธ(ฆ‰ ๋””๋ ‰† ๋ฆฌ๋“ค)

๋งŒ„ œ ฅ

$ ls -al | grep '^d.*' <= ls -al ˜ ฒฐณผ 'd'๋กœ ‹œž‘•˜๋Š” ๋ธ(ฆ‰ ๋””๋ ‰† ๋ฆฌ๋“ค)

๋งŒ„ œ ฅ

$ ls -al | grep '^[^d]..x..x..x' <= ๋””๋ ‰† ๋ฆฌ๋Š”  œ™ธ•˜ ("[^d]") ๋ˆ„ตฌ๋‚˜

‹–‰ฐ€๋Šฅ•œ ŒŒผ("..x..x..x")๋“ค ฐพธฐ

(2) $ grep ' •œ‹' ŒŒด๋ฆ„

<= ŒŒ„ ž…๋ ฅ๋ฐ›•„  •œ‹„ šฉ•˜—ฌ Œจ„„ ฐป•„๋ƒ„

˜ˆ: $ grep 'telnet' /etc/inetd.conf


™ธ˜ ๋ช…๋ –ด๋“ค๋„ grepณผ œ ‚ฌ•œ ˜•ƒœ๋กœ šฉ๋œ‹ค. ๋”ฐ๋„œ  •œ‹„ ž˜ šฉ•˜๋ฉด œ ‹‰Šค˜ ™œšฉด ๋ฐฐฐ€ ๋  ฒƒด๋‹ค.



PHP—„œ๋Š”  •œ‹ณผ ด€๋ •˜—ฌ ๋‹Œ˜„ฐ€ง€ •ˆ˜๋ฅผ  œณต•œ‹ค.


int ereg(string givenPattern, string givenString, array matched);

- givenString„ "string1stringAstring2stringBstring3 ... string9stringI" ๋กœ ฃผ–ด žˆ๋‹  •˜ž. ด๋•Œ stringA, stringB, ... , stringI๋Š” NULL –ด๋„ ƒด€—†๋‹ค(ฆ‰ givenString€ "string1string2string3 ... string9" ฒฝšฐž„).

- givenStringœ„™€ ฐ™ฃผ–ด„ ฒฝšฐ,

givenPattern€ "(pattern1)stringA(pattern2)stringB(pattern3) ... (pattern9)stringI"๋กœ ž…๋ •˜—ฌ••œ‹ค. ฆ‰ pattern1, pattern2, ..., pattern9๋Š” ฐฐ string1, string2, ... , string9—„œ ฐพ ž•˜๋Š”  •œ‹ฒƒด๋‹ค.

- ด๋•Œ pattern1ด string1—„œ ๋ฐœฒฌ•œ Œจ„€ $matched[1]—  €žฅ๋˜ , pattern2ฐ€ string2—„œ ๋ฐœฒฌ•œ Œจ„€ $matched[2]—  €žฅ๋˜ , ..., pattern9ฐ€ string9—„œ ๋ฐœฒฌ•œ Œจ„€ $matched[9]—  €žฅ๋œ‹ค. PHP3˜ ฒฝšฐ ereg—„œ๋Š” œ๋Œ€ 9œ นŒง€˜ pattern„ ฐพ„ ˆ˜ žˆ๋„๋ก „ •๋˜–ด žˆŒ— œ ˜•˜ž.

- ธ๋ฆฌ  $matched[0]—๋Š” $matched[1]stringA$matched[2]stringB ... $matched[9]stringIฐ€  €žฅ๋œ‹ค.

- eregฐ€ ๋ฐ˜™˜•˜๋Š” ฐ’€ $matched[0]—  €žฅ๋œ ๋ฌธž—ด˜ œˆ˜ด๋‹ค.

- ereg๋Š” case sensitive

- eregi๋Š” case insensitive


˜ˆ1 :

ฝ”๋“œ => print(ereg ("(.*)ef([abc].*)","abcdefabc",$matched));

print("<br>");

while (list($a,$b)=each($matched))

if ($b)

print("$a, $b <br>");

ฒฐณผ => 9

0, abcdefabc

1, abcd

2, abc

˜ˆ2 :

ฝ”๋“œ => print(ereg ("(.*)d(.*)e(.*)qrs(.*)","abcdefghijklmnopqrstuvwxyz",$matched));

print("<br>");

while (list($a,$b)=each($matched))

if ($b)

print("$a, $b <br>");

ฒฐณผ => 26

0, abcdefghijklmnopqrstuvwxyz

1, abc

3, fghijklmnop

4, tuvwxyz

˜ˆ 3 :

ฝ”๋“œ => $date="1999-11-17";

if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs))

print("$regs[3].$regs[2].$regs[1]");

else print("Invalid date format: $date");

ฒฐณผ => 17.11.1999

˜ˆ 4 :

ฝ”๋“œ => $joomin="711011-1234567";

if (ereg("([0-9]{2})([01]{1}[09]{1}[0-3]{1}[0-9]{1})-([12]{1}[0-9]{6})",$date, $regs))

print("Valid");

else print("Invalid format: $joomin");


int eregi(string givenPattern, string givenString, array matched);

- ereg˜ 'case insensitive' ๋ฒ„ ˜ˆ :

ฝ”๋“œ => $email="xs9_tx-abc.yyy_c@cne.kyungsung.ac.kr";

eregi("(^[_\.0-9a-z-]+)@(([0-9a-z][0-9a-z-]+\.)+)([a-z]{2,3}$)",$email,$matched);

while (list($a,$b)=each($matched))

if ($b) print("$a, $b <br>");


ฒฐณผ => 0, xs9_tx-abc.yyy_c@cne.kyungsung.ac.kr

1, xs9_tx-abc.yyy_c

2, cne.kyungsung.ac.

3, ac.

4, kr



ฝ”๋“œ => eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email,$matched);

while (list($a,$b)=each($matched))

if ($b) print("$a, $b <br>");

ฒฐณผ => 0, xs9_tx-abc.yyy_c@cne.kyungsung.ac.kr

1, ac.



string ereg_replace(string givenPattern, string replacementPattern, string givenString);

- givenString—„œ givenPattern— ๋ถ€••˜๋Š” …ŠคŠธ(matched text)๋ฅผ ฐพ•„„œ,

replacementPatternœผ๋กœ ๋Œ€ฒด

- givenPatternด "(Œจ„ด)"œผ๋กœ ๋ฌถธ ๋ฌธž—ด๋“ค„ ฌ••˜  žˆœผ๋ฉด, replacementPattern—๋Š” — ๋Œ€‘•˜๋Š” "\\digit(๋ฌธž—ด)" ˜•ƒœ˜ ๋ฌธž—ด๋“ค„ ฌ••˜  žˆ–ด••œ‹ค(digit๋Š” 0, 1, ... ,9 ‘ •˜๋‚˜). ธ๋ฆฌ  givenString€ "(Œจ„ด)"„ šฉ•ฐพ€ ฒฐณผ๋“ค„ "\\digit(๋ฌธž—ด)"— žˆ๋Š” "๋ฌธž—ด"๋“ค๋กœ ๋Œ€ฒด•˜ฒŒ ๋œ‹ค. "\\0" ๋Š” givenString  „ฒด— ๋Œ€•ด "(Œจ„ด)"˜ ฒฐณผ๋ฅผ  šฉ• •Œ šฉ๋œ‹ค.

- ๋ณ€ฒฝ๋œ ๋ฌธž—ด„ ๋ฆฌ„ด

- case sensitive


˜ˆ :

ฝ”๋“œ => $string = "This is a test";

print(ereg_replace(" is", " was",$string)); print("<br>");

print(ereg_replace("( )is","\\1was",$string)); print("<br>");

print(ereg_replace("(( )is)","\\2was",$string)); print("<br>");

print(ereg_replace("(( )is)(( )a)(( )test)", "\\1was\\2an\\3exam",$string));

ฒฐณผ => "This was a test";

"This was a test";

"This was a test";

"This was an exam";


˜ˆ 2 : redundant whitespace —†• ธฐ

ฝ”๋“œ => $str ="~ s/\s+/ /g";

$str = eregi_replace("[[:space:]]+", " ", $str);

print("$str<br>");

ฒฐณผ => ~ s/\s+/ /g


string eregi_replace(string givenPattern, string replacementPattern, string givenString);

- ereg_replace˜ 'case insensitive' ๋ฒ„ 

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:39
Processing time 0.0228 sec