¹q¸£·Æ¹«²Óµß¼Æ
¬O°¨±í400­¿
·h®a±M·~©~®a²M¼ä
§K¶O¨ì©²¦ô»ù¡A²M¼ä¾iÅ@°¨¤W·d©w

­º­¶  ¡E  tw ½×¾Â ¡E µ{¦¡³]­p°Q½×     ¡E 

[±Ð¾Ç]¦r¦ê³B²z¤Î±`³Wªí¥Ü¦¡(regular expression)

©ÐªF¡Gphp ·s¤â
µoªí®É¶¡¡G2007-05-08
[ÀËÁ|]


Php±Ð¾Ç¤å¥ó
2005-08-04 Thursday by ben
°Ñ¡B¦r¦ê³B²z¤Î±`³Wªí¥Ü¦¡(regular expression)

¤@¡B¦r¦ê³B²z

trim();¡G¥hÀY§ÀªÅ¥Õ¡C
ltrim();¡G¥hÀY³¡ªÅ¥Õ¡C
chop();¡G¥h§À³¡ªÅ¥Õ¡C
nl2br();±N¡¨\\n¡¨´«¦æ§ï¦¨
¡C
print();¦P§@¥Î¦Pecho¡A¦ýprint¬O¨ç¦¡¡A¶Ç¦^¥¬ªL­È¡C
printf();®æ¦¡¤Æ¦r¦ê¡A¶Ç¦^¾ã¼Æ¡C
sprintf();®æ¦¡¤Æ¦r¦ê¡C
Âà´«³W®æ%[Åã¥Ü¼e«×][-][][.¤p¼Æ¦ì¼Æ]«¬§O¡G¦³-¥Nªí¦V¥ª¾a»ô¡A¨S-¥Nªí¦V¥k¡C
%b:±NÅܼƸÑÄÀ¬°¾ã¼Æ¡A¨Ã¥H¤G¶i¦ìÅã¥Ü¡C
%c:±NÅܼƸÑÄÀ¬°¾ã¼Æ¡A¨Ã¥H¦r¤¸Åã¥Ü¡C
%d:±NÅܼƸÑÄÀ¬°¾ã¼Æ¡A¨Ã¥H¤Q¶i¦ìÅã¥Ü¡C
%f:±NÅܼƸÑÄÀ¬°¯BÂI¼Æ¡A¨Ã¥H¯BÂI¼ÆÅã¥Ü¡C
%o:±NÅܼƸÑÄÀ¬°¾ã¼Æ¡A¨Ã¥H¤K¶i¦ìÅã¥Ü¡C
%s:±NÅܼƸÑÄÀ¬°¦r¦ê¡A¨Ã¥H¦r¦êÅã¥Ü¡C
%x:±NÅܼƸÑÄÀ¬°¾ã¼Æ¡A¨Ã¥H¤Q¤»¶i¦ìÅã¥Ü¡A¥Îa-f¡C
%X:±NÅܼƸÑÄÀ¬°¾ã¼Æ¡A¨Ã¥H¤Q¤»¶i¦ìÅã¥Ü¡A¥ÎA-F¡C
AddSlashes();­Y¦³¤Ï±×®É¡A¥[¤WSlash¡AÅý¿é¤J¦r¦ê­Y§t¯S®í¦r¤¸®É¡A¥[¤W¶h¥X¦r¤¸\\¡A¥H§K¦s¤J¸ê®Æ®w®É½Ä½X¡CQ3¤W¤Þ¼Æ¬°ÅܼƮɡA°µ§¹¦¹¹Bºâ¥ß¨è¦s¦^¦¹ÅܼơA¾É­PÅܼƭȧïÅÜ¡F¸û·sªºª©¥»¡A¤Þ¼Æ¬°ÅܼƮɡA°µ§¹¦¹¹Bºâ¤£·|¾É­PÅܼƭȧïÅÜ¡C
StripSlashes();­Y¦³¤Ï±×®É¡A¥h±¼Slash¡A¨Ï¸ê®Æ®w¨ú¥X¸ê®ÆÁÙ­ì¡CQ3¤W¤Þ¼Æ¬°ÅܼƮɡA°µ§¹¦¹¹Bºâ¥ß¨è¦s¦^¦¹ÅܼơA¾É­PÅܼƭȧïÅÜ¡F¸û·sªºª©¥»¡A¤Þ¼Æ¬°ÅܼƮɡA°µ§¹¦¹¹Bºâ¤£·|¾É­PÅܼƭȧïÅÜ¡C
strtoupper();Âà¤j¼g¡C
strtolower();Âà¤p¼g¡C
ucfirst();¦r¦ê­ºÂà¤j¼g¡C
ucwords();¦r¦ê¤¤¨C­ÓWordªº¦r­ºÂà¤j¼g¡C
strtok(¦r¦ê,¡¨¤À¹j¦r¤¸¡¨);¡GÂ^¨ú¦r¦êªº«e­±¨ì¤À¦r¤¸¬°¤î¡C
substr(¦r¦ê,¶}©l¦r¤¸,ªø«×);¡GÂ^¨ú¤l¦r¦ê¡A²Ä¤@¦r¤¸ºâ0¡F¶}©l¦r¤¸¬°­t¡A¬°¦r¦ê§À´î¸Ó¼Æ¡A§Y¦r§Àºâ1­Ë¼Æ¸Ó¼Æ¤§¦r¤¸¡Cªø«×¬Ù²¤«h¨ú¨ì¦r§À¡Fªø«×¬°­t«h¨ú¨ì¦r§À­Ë¼Æ¸Ó¼Æ¤§¦r¤¸¡C
strcmp(¦r¦ê¤@,¦r¦ê¤G);¡G¤ñ¸û¨â¦r¦ê¡A¬Ûµ¥¬°0¡A¥¿¬°¦r¦ê¤@ASC½X¤j¡A­t¼Æ¬°¦r¦ê¤GASC½X¤j¡C
strcasecmp(¦r¦ê¤@,¦r¦ê¤G);¡G¦P¤W¡A¦ý¤£¤À¤j¤p¼g¡C
strlen();¡G¦r¦êªø«×¡C
strstr(¦r¦ê,±ý§ä¤§¤l¦r¦ê);¡G§ä¨ì¶Ç¦^¤l¦r¦ê¡u²Ä¤@¦¸¡v¥X²{¥H«á¤§³Ñ¾l¦r¦ê¡A§ä¤£¨ì¶Ç¦^¡u°²¡v¡C
strchr(¦r¦ê,±ý§ä¤§¤l¦r¦ê);¡G¦P¤W¡C
stristr(¦r¦ê,±ý§ä¤§¤l¦r¦ê);¡G¦P¤W¡A¦ý¤£¤À¤j¤p¼g¡C
strrchr(¦r¦ê,±ý§ä¤§¤l¦r¦ê);¡G§ä¨ì¶Ç¦^¤l¦r¦ê¡u³Ì«á¤@¦¸¡v¥X²{¥H«á¤§³Ñ¾l¦r¦ê¡A§ä¤£¨ì¶Ç¦^¡u°²¡v¡C
strpos(¦r¦ê,±ý§ä¤§¤l¦r¦ê,«ü©w»`´M¤§°_©l¦ì¸m);¡G§ä¨ì¶Ç¦^¤l¦r¦ê¡u²Ä¤@¦¸¡v¥X²{ªº¦ì¸m¡A§ä¤£¨ì¶Ç¦^¡u°²¡v¡C¦r¦ê­º¦ì¸mºâ0¡A¬Ù²¤»`´M°_ÂI®É¡A±q¦r¦ê­º¶}©l§ä¡C¦ý¬O¡u°²¡v¶Ç¦^­È¬O0¡A¦r­º¦ì¸m¶Ç¦^­È¤]¬O0¡A·|²V²c¡C¥i¥H¥Îif(¶Ç¦^­È===fasle)´ú¡A¦pªG¦¨¥ß¶Ç¦^­È¥Nªí¡u°²¡v¡A¦pªG¤£¦¨¥ß¶Ç¦^­È¥Nªí¦ì¸m0¡C
strrpos(¦r¦ê,±ý§ä¤§¤l¦r¦ê,«ü©w»`´M¤§°_©l¦ì¸m);¡G§ä¨ì¶Ç¦^¡u¤l¦r¦ê¦r­º¦r¤¸¡v¡u³Ì«á¤@¦¸¡v¥X²{ªº¦ì¸m¡A§ä¤£¨ì¶Ç¦^¡u°²¡v¡C¦r¦ê­º¦ì¸mºâ0¡A¬Ù²¤»`´M°_ÂI®É¡A±q¦r¦ê­º¶}©l§ä¡C
str_replace(»`´M¦r¦ê,¥N´«¦r¦ê,¦r¦ê°ï);¡G¦b¦r¦ê°ï¤¤§ä¨ì¡u»`´M¦r¦ê¡v¨Ã¥Î¡u¥N´«¦r¦ê¡v´«±¼¥¦­Ì¡C
substr_replace(¦r¦ê°ï,¥N´«¦r¦ê,°_ÂI,ªø«×);¡G¦b¦r¦ê°ï«ü©wªº°_ÂI¤Îªø«×¡A¥Î¥N´«¦r¦ê´«±¼¥¦­Ì¡C°_ÂI¬°0©Î¥¿¡A¥Ñ¦r¦ê°ïÀY°_ºâ¡F°_ÂI¬°­t¡A¥Ñ¦r¦ê°ï§À°_ºâ¡Cªø«×¥¼«ü©w¡A«h´«¨ì¦r¦ê°ï§À¡Fªø«×¬°0¡A«h´¡¤J­ì¦r¦ê¡Fªø«×¬°¥¿¡A«h¨ú¥N´X­Ó¦r¦ê¼Æ¡Fªø«×¬°­t¡A«h¦Û§ÀºÝ¶}¦p¨ú¥N¡A°±©óªø«×¡C
¤G¡B¥¿³Wªí¥Ü¦¡(regular expression)

PHP¤ä´©¨âºØ¥¿³Wªí¥Ü¦¡¡APOSIX©MPerl¡CPOSIX¤º«Ø¡APerl»yªk¶·±NPCRE(Perl-compatible regular expression)µ{¦¡®w½sĶ¶i¨Ó¡C¥¿³Wªí¥Ü¦¡¤ñ¦r¦êºC¡A¾¨¶q¥Î¦r¦ê¡C

()¡G¬A¦í¤lªí¥Ü¦¡¡C
[]¡G¬A¦í¦r¤¸¡C
{}¡G¬A¦í­«ÂЦ¸¼Æ»¡©ú¡C
.°£\\
¥H¥~ªº³æ¤@¦r¤¸¡C¦p.at¬Û²Å©ócat,sat,mat¡C
[a-z]¡B[^a-z]¡Ga¨ìz¡B«Da-z¡C
[aeiou]
[a-zA-Z]
¦r¤¸Ãþ§O¡G
[[:alpha:]]¡G¦r¥À¡C
[[:alnum:]]¡G¦r¥À¤Î¼Æ¦r¡C
[[:lower:]]¡G¤p¼g¦r¥À¡C
[[:upper:]]¡G¤j¼g¦r¥À¡C
[[:digit:]]¡G¼Æ¦r¦r¤¸¡C
[[:xdigit:]]¡G16¶i¦ì¼Æ¦r¦r¤¸¡C
[[:punct:]]¡G¼ÐÂI¡C
[[:blank:]]¡G¸õ®æ¤ÎªÅ¥Õ¡C
[[:space:]]¡GªÅ¥Õ¡C
[[:cntrl:]]¡G±±¨î¦r¤¸¡C
[[:print:]]¡G©Ò¦³¥iµø¦r¤¸¡C
[[:graph:]]¡G°£ªÅ¥Õ¦r¤¸¥~©Ò¦³¥iµø¦r¤¸¡C
[]*¡Gªí¥Ü¸Ó¼Ë¦¡·|¥X²{0©Î0¦¸¥H¤W¡C
[]+¡Gªí¥Ü¸Ó¼Ë¦¡·|¥X²{1©Î1¦¸¥H¤W¡C¦p[[:alpha:]]+ªí¥Ü¦Ü¤Ö·|¦³¤@­Ó­^¤å¦r¥À¡C
(very )*large¡G¬Û²Å©ólarge¡Bvery large¡Bvery very large¡C
{3}¡G­«½Æ¤T¦¸¡C
{2,4}¡G­«½Æ¤G¨ì¥|¦¸¡C
{2,}¡G­«½Æ¨â¦¸¥H¤W¡C
^(¦bªí¥Ü¦¡¥~)¡Aªí¥Ü¦¡¶·¥X²{¦b³Q»`´M¦r¦ê­º¤~ºâ¬Û²Å¡C¦p^bob¡C
$¡Aªí¥Ü¦¡¶·¥X²{¦b³Q»`´M¦r¦ê§À¤~ºâ¬Û²Å¡C¦pcom$¡C
^[a-z]$¡A¦r¦êÀY§À¤§¶¡¡A¥X²{a-z¥ô¤@¦r¤¸´Nºâ¬Û²Å¡C
(¿ï¶µ¤@)|(¿ï¶µ¤G)|(¿ï¶µ¤T)¡G¦h¿ï¤@³£²Å¦X
¯S®í¦r¤¸¡A¦b¥¿³Wªí¥Ü¦¡¤¤¶·¥H\\¯S®í¦r¤¸¨ú¥N¡C
¤¤¬A¸¹¥~

\\¡G¸õ²æ¦r¤¸¡C
^¡G¤ñ¹ï¦r¦êÀY¡C
$¡G¤ñ¹ï¦r¦ê§À¡C
.¡G´«¦æ¤§¥~ªº¥ô·N¦r¤¸¡C
|¡G¦h­«¿ï¾Ü°_ÂI(Ū¦¨OR)¡C
(¡G¤l¼Ë¦¡°_ÂI¡C
)¡G¤l¼Ë¦¡²×ÂI¡C
*¡G­«½Æ0¦¸¥H¤W¡C
+¡G­«½Æ1¦¸¥H¤W¡C
{¡G­«½Æ¦¸¼Æ ³Ì¤p/³Ì¤j ¶q¤Æ­È°_ÂI¡C
}¡G­«½Æ¦¸¼Æ ³Ì¤p/³Ì¤j ¶q¤Æ­È²×ÂI¡C
¤¤¬A¸¹¥~

\\¡G¸õ²æ¦r¤¸¡C
^¡G§_©w¡C
-¡Gªí¥Ü¦r¤¸½d³ò¡C
ereg(¥¿³Wªí¥Ü¦¡,³Q»`´M¦r¦ê,°}¦C¦W);¡G¦b³Q»`´M¦r¦ê¤¤§ä²Å¦X©ó¥¿³Wªí¥Ü¦¡ªº¤l¦r¦ê¡A§ä¨ì´N©ñ¶i°}¦C¡A¦¨¬°¤@­Ó¤¸¯À¡C¶Ç¦^¯u°²(1,0)¡C°}¦C¦W¥i¬Ù²¤¡C
eregi(¥¿³Wªí¥Ü¦¡,³Q»`´M¦r¦ê,°}¦C¦W);¡G¦Pereg¡A¦ý¤£¤À¤j¤p¼g¡C
ereg_replace(¥¿³Wªí¥Ü¦¡,¨ú¥N¦r¦ê,³Q»`´M¦r¦ê);¡G¦b³Q»`´M¦r¦ê¤¤§ä¨ìªí¥Ü¦¡¡A¥Î¨ú¥N¦r¦ê´«±¼¡C
eregi_replace(¥¿³Wªí¥Ü¦¡,¨ú¥N¦r¦ê,³Q»`´M¦r¦ê);¡G¦Pereg_replace¡A¦ý¤£¤À¤j¤p¼g¡C
split(¥¿³Wªí¥Ü¦¡ªí­z¤§¤À¹j¦r¦ê,³Q¤Á³Î¦r¦ê,¶Ç¦^¤¸¯À¤W­­);¡G¥Î¤À¹j¦r¦ê¡A±N³Q¤Á³Î¦r¦ê¡A¤Á¦¨¤@¬q¬q¡A¦¨¬°°}¦C¤¤¤@­Ó­Ó¤¸¯À¡C¶Ç¦^°}¦C¡C
°Ñ¡B¦r¦ê³B²z¤Î±`³Wªí¥Ü¦¡(regular expression)

¤@¡B¦r¦ê³B²z

trim();¡G¥hÀY§ÀªÅ¥Õ¡C
ltrim();¡G¥hÀY³¡ªÅ¥Õ¡C
chop();¡G¥h§À³¡ªÅ¥Õ¡C
nl2br();±N¡¨\\n¡¨´«¦æ§ï¦¨
¡C
print();¦P§@¥Î¦Pecho¡A¦ýprint¬O¨ç¦¡¡A¶Ç¦^¥¬ªL­È¡C
printf();®æ¦¡¤Æ¦r¦ê¡A¶Ç¦^¾ã¼Æ¡C
sprintf();®æ¦¡¤Æ¦r¦ê¡C
Âà´«³W®æ%[Åã¥Ü¼e«×][-][][.¤p¼Æ¦ì¼Æ]«¬§O¡G¦³-¥Nªí¦V¥ª¾a»ô¡A¨S-¥Nªí¦V¥k¡C
%b:±NÅܼƸÑÄÀ¬°¾ã¼Æ¡A¨Ã¥H¤G¶i¦ìÅã¥Ü¡C
%c:±NÅܼƸÑÄÀ¬°¾ã¼Æ¡A¨Ã¥H¦r¤¸Åã¥Ü¡C
%d:±NÅܼƸÑÄÀ¬°¾ã¼Æ¡A¨Ã¥H¤Q¶i¦ìÅã¥Ü¡C
%f:±NÅܼƸÑÄÀ¬°¯BÂI¼Æ¡A¨Ã¥H¯BÂI¼ÆÅã¥Ü¡C
%o:±NÅܼƸÑÄÀ¬°¾ã¼Æ¡A¨Ã¥H¤K¶i¦ìÅã¥Ü¡C
%s:±NÅܼƸÑÄÀ¬°¦r¦ê¡A¨Ã¥H¦r¦êÅã¥Ü¡C
%x:±NÅܼƸÑÄÀ¬°¾ã¼Æ¡A¨Ã¥H¤Q¤»¶i¦ìÅã¥Ü¡A¥Îa-f¡C
%X:±NÅܼƸÑÄÀ¬°¾ã¼Æ¡A¨Ã¥H¤Q¤»¶i¦ìÅã¥Ü¡A¥ÎA-F¡C
AddSlashes();­Y¦³¤Ï±×®É¡A¥[¤WSlash¡AÅý¿é¤J¦r¦ê­Y§t¯S®í¦r¤¸®É¡A¥[¤W¶h¥X¦r¤¸\\¡A¥H§K¦s¤J¸ê®Æ®w®É½Ä½X¡CQ3¤W¤Þ¼Æ¬°ÅܼƮɡA°µ§¹¦¹¹Bºâ¥ß¨è¦s¦^¦¹ÅܼơA¾É­PÅܼƭȧïÅÜ¡F¸û·sªºª©¥»¡A¤Þ¼Æ¬°ÅܼƮɡA°µ§¹¦¹¹Bºâ¤£·|¾É­PÅܼƭȧïÅÜ¡C
StripSlashes();­Y¦³¤Ï±×®É¡A¥h±¼Slash¡A¨Ï¸ê®Æ®w¨ú¥X¸ê®ÆÁÙ­ì¡CQ3¤W¤Þ¼Æ¬°ÅܼƮɡA°µ§¹¦¹¹Bºâ¥ß¨è¦s¦^¦¹ÅܼơA¾É­PÅܼƭȧïÅÜ¡F¸û·sªºª©¥»¡A¤Þ¼Æ¬°ÅܼƮɡA°µ§¹¦¹¹Bºâ¤£·|¾É­PÅܼƭȧïÅÜ¡C
strtoupper();Âà¤j¼g¡C
strtolower();Âà¤p¼g¡C
ucfirst();¦r¦ê­ºÂà¤j¼g¡C
ucwords();¦r¦ê¤¤¨C­ÓWordªº¦r­ºÂà¤j¼g¡C
strtok(¦r¦ê,¡¨¤À¹j¦r¤¸¡¨);¡GÂ^¨ú¦r¦êªº«e­±¨ì¤À¦r¤¸¬°¤î¡C
substr(¦r¦ê,¶}©l¦r¤¸,ªø«×);¡GÂ^¨ú¤l¦r¦ê¡A²Ä¤@¦r¤¸ºâ0¡F¶}©l¦r¤¸¬°­t¡A¬°¦r¦ê§À´î¸Ó¼Æ¡A§Y¦r§Àºâ1­Ë¼Æ¸Ó¼Æ¤§¦r¤¸¡Cªø«×¬Ù²¤«h¨ú¨ì¦r§À¡Fªø«×¬°­t«h¨ú¨ì¦r§À­Ë¼Æ¸Ó¼Æ¤§¦r¤¸¡C
strcmp(¦r¦ê¤@,¦r¦ê¤G);¡G¤ñ¸û¨â¦r¦ê¡A¬Ûµ¥¬°0¡A¥¿¬°¦r¦ê¤@ASC½X¤j¡A­t¼Æ¬°¦r¦ê¤GASC½X¤j¡C
strcasecmp(¦r¦ê¤@,¦r¦ê¤G);¡G¦P¤W¡A¦ý¤£¤À¤j¤p¼g¡C
strlen();¡G¦r¦êªø«×¡C
strstr(¦r¦ê,±ý§ä¤§¤l¦r¦ê);¡G§ä¨ì¶Ç¦^¤l¦r¦ê¡u²Ä¤@¦¸¡v¥X²{¥H«á¤§³Ñ¾l¦r¦ê¡A§ä¤£¨ì¶Ç¦^¡u°²¡v¡C
strchr(¦r¦ê,±ý§ä¤§¤l¦r¦ê);¡G¦P¤W¡C
stristr(¦r¦ê,±ý§ä¤§¤l¦r¦ê);¡G¦P¤W¡A¦ý¤£¤À¤j¤p¼g¡C
strrchr(¦r¦ê,±ý§ä¤§¤l¦r¦ê);¡G§ä¨ì¶Ç¦^¤l¦r¦ê¡u³Ì«á¤@¦¸¡v¥X²{¥H«á¤§³Ñ¾l¦r¦ê¡A§ä¤£¨ì¶Ç¦^¡u°²¡v¡C
strpos(¦r¦ê,±ý§ä¤§¤l¦r¦ê,«ü©w»`´M¤§°_©l¦ì¸m);¡G§ä¨ì¶Ç¦^¤l¦r¦ê¡u²Ä¤@¦¸¡v¥X²{ªº¦ì¸m¡A§ä¤£¨ì¶Ç¦^¡u°²¡v¡C¦r¦ê­º¦ì¸mºâ0¡A¬Ù²¤»`´M°_ÂI®É¡A±q¦r¦ê­º¶}©l§ä¡C¦ý¬O¡u°²¡v¶Ç¦^­È¬O0¡A¦r­º¦ì¸m¶Ç¦^­È¤]¬O0¡A·|²V²c¡C¥i¥H¥Îif(¶Ç¦^­È===fasle)´ú¡A¦pªG¦¨¥ß¶Ç¦^­È¥Nªí¡u°²¡v¡A¦pªG¤£¦¨¥ß¶Ç¦^­È¥Nªí¦ì¸m0¡C
strrpos(¦r¦ê,±ý§ä¤§¤l¦r¦ê,«ü©w»`´M¤§°_©l¦ì¸m);¡G§ä¨ì¶Ç¦^¡u¤l¦r¦ê¦r­º¦r¤¸¡v¡u³Ì«á¤@¦¸¡v¥X²{ªº¦ì¸m¡A§ä¤£¨ì¶Ç¦^¡u°²¡v¡C¦r¦ê­º¦ì¸mºâ0¡A¬Ù²¤»`´M°_ÂI®É¡A±q¦r¦ê­º¶}©l§ä¡C
str_replace(»`´M¦r¦ê,¥N´«¦r¦ê,¦r¦ê°ï);¡G¦b¦r¦ê°ï¤¤§ä¨ì¡u»`´M¦r¦ê¡v¨Ã¥Î¡u¥N´«¦r¦ê¡v´«±¼¥¦­Ì¡C
substr_replace(¦r¦ê°ï,¥N´«¦r¦ê,°_ÂI,ªø«×);¡G¦b¦r¦ê°ï«ü©wªº°_ÂI¤Îªø«×¡A¥Î¥N´«¦r¦ê´«±¼¥¦­Ì¡C°_ÂI¬°0©Î¥¿¡A¥Ñ¦r¦ê°ïÀY°_ºâ¡F°_ÂI¬°­t¡A¥Ñ¦r¦ê°ï§À°_ºâ¡Cªø«×¥¼«ü©w¡A«h´«¨ì¦r¦ê°ï§À¡Fªø«×¬°0¡A«h´¡¤J­ì¦r¦ê¡Fªø«×¬°¥¿¡A«h¨ú¥N´X­Ó¦r¦ê¼Æ¡Fªø«×¬°­t¡A«h¦Û§ÀºÝ¶}¦p¨ú¥N¡A°±©óªø«×¡C
¤G¡B¥¿³Wªí¥Ü¦¡(regular expression)

PHP¤ä´©¨âºØ¥¿³Wªí¥Ü¦¡¡APOSIX©MPerl¡CPOSIX¤º«Ø¡APerl»yªk¶·±NPCRE(Perl-compatible regular expression)µ{¦¡®w½sĶ¶i¨Ó¡C¥¿³Wªí¥Ü¦¡¤ñ¦r¦êºC¡A¾¨¶q¥Î¦r¦ê¡C

()¡G¬A¦í¤lªí¥Ü¦¡¡C
[]¡G¬A¦í¦r¤¸¡C
{}¡G¬A¦í­«ÂЦ¸¼Æ»¡©ú¡C
.°£\\
¥H¥~ªº³æ¤@¦r¤¸¡C¦p.at¬Û²Å©ócat,sat,mat¡C
[a-z]¡B[^a-z]¡Ga¨ìz¡B«Da-z¡C
[aeiou]
[a-zA-Z]
¦r¤¸Ãþ§O¡G
[[:alpha:]]¡G¦r¥À¡C
[[:alnum:]]¡G¦r¥À¤Î¼Æ¦r¡C
[[:lower:]]¡G¤p¼g¦r¥À¡C
[[:upper:]]¡G¤j¼g¦r¥À¡C
[[:digit:]]¡G¼Æ¦r¦r¤¸¡C
[[:xdigit:]]¡G16¶i¦ì¼Æ¦r¦r¤¸¡C
[[:punct:]]¡G¼ÐÂI¡C
[[:blank:]]¡G¸õ®æ¤ÎªÅ¥Õ¡C
[[:space:]]¡GªÅ¥Õ¡C
[[:cntrl:]]¡G±±¨î¦r¤¸¡C
[[:print:]]¡G©Ò¦³¥iµø¦r¤¸¡C
[[:graph:]]¡G°£ªÅ¥Õ¦r¤¸¥~©Ò¦³¥iµø¦r¤¸¡C
[]*¡Gªí¥Ü¸Ó¼Ë¦¡·|¥X²{0©Î0¦¸¥H¤W¡C
[]+¡Gªí¥Ü¸Ó¼Ë¦¡·|¥X²{1©Î1¦¸¥H¤W¡C¦p[[:alpha:]]+ªí¥Ü¦Ü¤Ö·|¦³¤@­Ó­^¤å¦r¥À¡C
(very )*large¡G¬Û²Å©ólarge¡Bvery large¡Bvery very large¡C
{3}¡G­«½Æ¤T¦¸¡C
{2,4}¡G­«½Æ¤G¨ì¥|¦¸¡C
{2,}¡G­«½Æ¨â¦¸¥H¤W¡C
^(¦bªí¥Ü¦¡¥~)¡Aªí¥Ü¦¡¶·¥X²{¦b³Q»`´M¦r¦ê­º¤~ºâ¬Û²Å¡C¦p^bob¡C
$¡Aªí¥Ü¦¡¶·¥X²{¦b³Q»`´M¦r¦ê§À¤~ºâ¬Û²Å¡C¦pcom$¡C
^[a-z]$¡A¦r¦êÀY§À¤§¶¡¡A¥X²{a-z¥ô¤@¦r¤¸´Nºâ¬Û²Å¡C
(¿ï¶µ¤@)|(¿ï¶µ¤G)|(¿ï¶µ¤T)¡G¦h¿ï¤@³£²Å¦X
¯S®í¦r¤¸¡A¦b¥¿³Wªí¥Ü¦¡¤¤¶·¥H\\¯S®í¦r¤¸¨ú¥N¡C
¤¤¬A¸¹¥~

\\¡G¸õ²æ¦r¤¸¡C
^¡G¤ñ¹ï¦r¦êÀY¡C
$¡G¤ñ¹ï¦r¦ê§À¡C
.¡G´«¦æ¤§¥~ªº¥ô·N¦r¤¸¡C
|¡G¦h­«¿ï¾Ü°_ÂI(Ū¦¨OR)¡C
(¡G¤l¼Ë¦¡°_ÂI¡C
)¡G¤l¼Ë¦¡²×ÂI¡C
*¡G­«½Æ0¦¸¥H¤W¡C
+¡G­«½Æ1¦¸¥H¤W¡C
{¡G­«½Æ¦¸¼Æ ³Ì¤p/³Ì¤j ¶q¤Æ­È°_ÂI¡C
}¡G­«½Æ¦¸¼Æ ³Ì¤p/³Ì¤j ¶q¤Æ­È²×ÂI¡C
¤¤¬A¸¹¥~

\\¡G¸õ²æ¦r¤¸¡C
^¡G§_©w¡C
-¡Gªí¥Ü¦r¤¸½d³ò¡C
ereg(¥¿³Wªí¥Ü¦¡,³Q»`´M¦r¦ê,°}¦C¦W);¡G¦b³Q»`´M¦r¦ê¤¤§ä²Å¦X©ó¥¿³Wªí¥Ü¦¡ªº¤l¦r¦ê¡A§ä¨ì´N©ñ¶i°}¦C¡A¦¨¬°¤@­Ó¤¸¯À¡C¶Ç¦^¯u°²(1,0)¡C°}¦C¦W¥i¬Ù²¤¡C
eregi(¥¿³Wªí¥Ü¦¡,³Q»`´M¦r¦ê,°}¦C¦W);¡G¦Pereg¡A¦ý¤£¤À¤j¤p¼g¡C
ereg_replace(¥¿³Wªí¥Ü¦¡,¨ú¥N¦r¦ê,³Q»`´M¦r¦ê);¡G¦b³Q»`´M¦r¦ê¤¤§ä¨ìªí¥Ü¦¡¡A¥Î¨ú¥N¦r¦ê´«±¼¡C
eregi_replace(¥¿³Wªí¥Ü¦¡,¨ú¥N¦r¦ê,³Q»`´M¦r¦ê);¡G¦Pereg_replace¡A¦ý¤£¤À¤j¤p¼g¡C
split(¥¿³Wªí¥Ü¦¡ªí­z¤§¤À¹j¦r¦ê,³Q¤Á³Î¦r¦ê,¶Ç¦^¤¸¯À¤W­­);¡G¥Î¤À¹j¦r¦ê¡A±N³Q¤Á³Î¦r¦ê¡A¤Á¦¨¤@¬q¬q¡A¦¨¬°°}¦C¤¤¤@­Ó­Ó¤¸¯À¡C¶Ç¦^°}¦C¡C



  • ÃÙ§Uºô¯¸       

    ¼s§Q¤£°Ê²£-ªO¾ô¦b¦a¥Í®Ú³Ì¹ê¦b--·sªO¯S°Ï«ü¦W«×³Ì°ª¡B­È±o±z«H¿àªº¦n©Ð¥ò
    §¹¾ã©Ð°T¡A©Ð«Î¡B©±­±¼öªùºë¿ïª«¥ó¡A¼s§Q¤£°Ê²£ Àu½è¥ò¤¶¡A©Ð«Î¯²¸î¡B¶R½æ¸ê°T³z©ú¡A¥æ©ö¯u¦w¤ß¡I
    ¼s§Q¤£°Ê²£-·sªO¯S°Ï«ü¦W«×³Ì°ª¡B­È±o±z«H¿àªº¦n©Ð¥ò
    ±zªº¦«¥I,¼s§Q¥Î¤ß¬°±zªA°È

  • 1 ¼Ó¦í¤á¡Gphp ·s¤â
    µoªí®É¶¡¡G2007-05-09
    [ÀËÁ|]









    ���h���F�� - Wikipedia






















    ���h���F��



    ���h���F���]Regular Expression�A�Y�g��regexp�Aregex��regxp)�A�S�����W���F���B���W���ܦ����`�W���F�������W�ƪ��ܪk�����W���ܪk�A�O���@�ӥΨӴy�z�Ϊ̤ǰt�@�t�C�ŦX�Y���y�k�W�h���r��������Ӧr����C�b�ܦh�奻�s�边�Ψ�L�u��̡A���h���F���q�`�Q�Ψ��˯��M/�δ������DzŦX�Y�ӼҦ����奻���e�C�\�h�{���y��������Q�Υ��h���F���i��r����ާ@�C�Ҧp�A�bPerl���N���ؤF�@�ӥ\��j�j���b���h���F�������C���h���F���o�ӷ����̪�O��Unix�����u��n��]�Ҧpsed�Mgrep�^���ζ}���C


    �򥻷���


    �@�ӥ��h���F���q�`�Q�٬��@���Ҧ� (pattern)�A���ΨӴy�z�Ϊ̤ǰt�@�t�C�ŦX�Y���y�k�W�h���r�����C�Ҧp�GHandel�BHändel �M Haendel �o�T�Ӧr����A���i�H�� "H(a|ä|ae)ndel" �o�ӼҦ��Ӵy�z�C�j�������h���F�����������p�U�����c�G



    ����

    |

    �ݪ����j�ťN�������C�Ҧp"gray|grey"�i�H�ǰtgrey��gray�C





    �ƶq���w

    �Y�Ӧr���᪺�ƶq���w�ťΨӭ��w�e���o�Ӧr�����\�X�{���ӼơC�̱`�����ƶq���w�ť]�A+, ?,�M*�]���[�ƶq���w�h�N���X�{�@���B�ȥX�{�@���^�G



    +

    �[���N���e�����r�������ܤ֥X�{�@���C(1���A�Φh��)�C�Ҧp�A"goo+gle"�i�H�ǰtgoogle�Agooogle�Agoooogle��;





    ?

    �ݸ��N���e�����r���̦h�u�i�H�X�{�@���C(0���A��1��)�C�Ҧp�A"colou?r"�i�H�ǰtcolour�Ϊ�color;





    *

    �P���N���e�����r���i�H���X�{�A�]�i�H�X�{�@���Ϊ̦h���C(0���A��1���A�Φh��)�C�Ҧp�A"0*42"�i�H�ǰt42�A042�A0042�A00042���C





    ����

    ��A���i�H�Ψөw�q�ާ@�Ū��d��M�u���סC�Ҧp�A"gr(a|e)y"������"gray|grey"�A"(grand)?father"�ǰtfather�Mgrandfather�C


    �W�z�o�Ǻc�y�l���i�H�ۥѲզX�A�]���A"H(ae?|ä)ndel"�M"H(a|ae|ä)ndel"�O�ۦP���C


    ��T���y�k�i��]���P���u��ε{�ǦӲ��C



    ���v


    �̪쪺���h���F���X�{���z�׹q��������۰ʱ���z���M�Φ��y���z�����C�b�o�ǻ�줤����p��]�۰ʱ���^���ҫ��M���Φ��y���y�z�P��������s�C1940�~�N�AWarren McCulloch�PWalter Pitts�N���g�t���������g���y�z���p��²�檺�۰ʱ���C�y��A�ƾǮaStephen Kleene�Q�κ٤������h���X���ƾDzŸ��Ӵy�z���ҫ��CKen Thompson�N���Ÿ��t�ΤޤJ�s�边QED�A�M��OUnix�W���s�边ed�A�ó̲פޤJgrep�C�ۦ��A���h���F���Q�s�x�a�ϥΩ�U��Unix�Ϊ�����Unix���u��A�ҦpPerl�C


    Perl���h���F�����۩�Henry Spencer�g��regex�A���w�g�t�Ʀ��Fpcre�]Perl�ۮe���h���F��Perl Compatible Regular Expressions�^�A�@�ӥ�Philip Hazel�}�o���A���ܦh�{�N�u��ҨϥΪ��w�C


    �U�q���y�����������h���F������X�ثe�}�i���ܮt�C���Ӫ�Perl6���l����Apocalypse���]�p���w�Ҽ{��F�o�I�C



    ���F������


    ���h���F�����h�ؤ��P������C�U���O�bPCRE�����r���Ψ�b���h���F���W�U�夤���欰���@�ӧ���C���G







































































































































































    �r�� �y�z
    \ �N�U�@�Ӧr���аO���@�ӯS���r���B�Τ@�ӭ�q�r���B�Τ@�ӦV��ޥΡB�Τ@�ӤK�i����q�šC�Ҧp�A�un�v�ǰt�r���un�v�C�u\n�v�ǰt�@�Ӵ���šC�ǦC�u\\�v�ǰt�u\�v�ӡu\(�v�h�ǰt�u(�v�C
    ^ �ǰt��J�r���ꪺ�}�l��m�C�p�G�]�m�FRegExp��H��Multiline�ݩʡA^�]�ǰt�u\n�v�Ρu\r�v���᪺��m�C
    $ �ǰt��J�r���ꪺ������m�C�p�G�]�m�FRegExp��H��Multiline�ݩʡA$�]�ǰt�u\n�v�Ρu\r�v���e����m�C
    * �ǰt�e�����l���F���s���Φh���C�Ҧp�Azo*��ǰt�uz�v�H�Ρuzoo�v�C*������{0,}�C
    + �ǰt�e�����l���F���@���Φh���C�Ҧp�A�uzo+�v��ǰt�uzo�v�H�Ρuzoo�v�A������ǰt�uz�v�C+������{1,}�C
    ? �ǰt�e�����l���F���s���Τ@���C�Ҧp�A�udo(es)?�v�i�H�ǰt�udo�v�Ρudoes�v�����udo�v�C?������{0,1}�C
    {n} n�O�@�ӫD�t��ơC�ǰt�T�w��n���C�Ҧp�A�uo{2}�v����ǰt�uBob�v�����uo�v�A���O��ǰt�ufood�v�������o�C
    {n,} n�O�@�ӫD�t��ơC�ܤ֤ǰtn���C�Ҧp�A�uo{2,}�v����ǰt�uBob�v�����uo�v�A����ǰt�ufoooood�v�����Ҧ�o�C�uo{1,}�v������uo+�v�C�uo{0,}�v�h������uo*�v�C
    {n,m} m�Mn�����D�t��ơA�䤤n<=m�C�̤֤ǰtn���B�̦h�ǰtm���C�Ҧp�A�uo{1,3}�v�N�ǰt�ufooooood�v�����e�T��o�C�uo{0,1}�v������uo?�v�C�Ъ`�N�b�r���M��ӼƤ������঳�Ů�C
    ? ���Ӧr�����b����@�Ө�L�����(*,+,?,{n},{n,},{n,m})�᭱�ɡA�ǰt�Ҧ��O�D�g�����C�D�g���Ҧ����i��֪��ǰt�ҷj�����r����A�ӹw�]���g���Ҧ��h���i��h���ǰt�ҷj�����r����C�Ҧp�A���r����uoooo�v�A�uo+?�v�N�ǰt��ӡuo�v�A�ӡuo+�v�N�ǰt�Ҧ��uo�v�C
    . �ǰt���u\n�v���~�������Ӧr���C�n�ǰt�]�A�u\n�v�b��������r���A�Шϥι��u[.\n]�v���Ҧ��C
    (pattern) �ǰtpattern������o�@�ǰt�C��������ǰt�i�H�q���ͪ�Matches���X�o��A�bVBScript���ϥ�SubMatches���X�A�bJScript���h�ϥ�$0�K$9�ݩʡC�n�ǰt��A���r���A�ШϥΡu\(�v�Ρu\)�v�C
    (?:pattern) �ǰtpattern��������ǰt���G�A�]�N�O���o�O�@�ӫD����ǰt�A���i��s�x�ѥH��ϥΡC�o�b�ϥΡu�Ρv�r��(|)�ӲզX�@�ӼҦ����U�ӳ����O�ܦ��ΡC�Ҧp�A�uindustr(?:y|ies)�N�O�@�Ӥ�vindustry|industries'��²�������F���C
    (?=pattern) ���V�w�d�A�b����ǰtpattern���r����}�l�B�ǰt�d��r����C�o�O�@�ӫD����ǰt�A�]�N�O���A�Ӥǰt���ݭn����ѥH��ϥΡC�Ҧp�A�uWindows(?=95|98|NT|2000)�v��ǰt�uWindows2000�v�����uWindows�v�A������ǰt�uWindows3.1�v�����uWindows�v�C�w�d�����Ӧr���A�]�N�O���A�b�@�Ӥǰt�o�ͫ�A�b�̫�@���ǰt����ߧY�}�l�U�@���ǰt���j���A�Ӥ��O�q�]�t�w�d���r������}�l�C
    (?!pattern) �t�V�w�d�A�b���󤣤ǰtpattern���r����}�l�B�ǰt�d��r����C�o�O�@�ӫD����ǰt�A�]�N�O���A�Ӥǰt���ݭn����ѥH��ϥΡC�Ҧp�uWindows(?!95|98|NT|2000)�v��ǰt�uWindows3.1�v�����uWindows�v�A������ǰt�uWindows2000�v�����uWindows�v�C�w�d�����Ӧr���A�]�N�O���A�b�@�Ӥǰt�o�ͫ�A�b�̫�@���ǰt����ߧY�}�l�U�@���ǰt���j���A�Ӥ��O�q�]�t�w�d���r������}�l
    x|y �ǰtx��y�C�Ҧp�A�uz|food�v��ǰt�uz�v�Ρufood�v�C�u(z|f)ood�v�h�ǰt�uzood�v�Ρufood�v�C
    [xyz] �r�Ŷ��X�C�ǰt�ҥ]�t�����N�@�Ӧr���C�Ҧp�A�u[abc]�v�i�H�ǰt�uplain�v�����ua�v�C
    [^xyz] �t�Ȧr�Ŷ��X�C�ǰt���]�t�����N�r���C�Ҧp�A�u[^abc]�v�i�H�ǰt�uplain�v�����up�v�C
    [a-z] �r���d��C�ǰt���w�d�򤺪����N�r���C�Ҧp�A�u[a-z]�v�i�H�ǰt�ua�v��uz�v�d�򤺪����N�p�g�r���r���C
    [^a-z] �t�Ȧr���d��C�ǰt���󤣦b���w�d�򤺪����N�r���C�Ҧp�A�u[^a-z]�v�i�H�ǰt���󤣦b�ua�v��uz�v�d�򤺪����N�r���C
    \b �ǰt�@�ӳ����ɡA�]�N�O������M�Ů涡����m�C�Ҧp�A�uer\b�v�i�H�ǰt�unever�v�����uer�v�A������ǰt�uverb�v�����uer�v�C
    \B �ǰt�D�����ɡC�uer\B�v��ǰt�uverb�v�����uer�v�A������ǰt�unever�v�����uer�v�C
    \cx �ǰt��x����������r���C�Ҧp�A\cM�ǰt�@��Control-M�Φ^���šCx���ȥ�����A-Z��a-z���@�C�_�h�A�Nc�����@�ӭ�q���uc�v�r���C
    \d �ǰt�@�ӼƦr�r���C������[0-9]�C
    \D �ǰt�@�ӫD�Ʀr�r���C������[^0-9]�C
    \f �ǰt�@�Ӵ����šC������\x0c�M\cL�C
    \n �ǰt�@�Ӵ���šC������\x0a�M\cJ�C
    \r �ǰt�@�Ӧ^���šC������\x0d�M\cM�C
    \s �ǰt����ťզr���A�]�A�Ů�B�s���šB�����ŵ����C������[\f\n\r\t\v]�C
    \S �ǰt����D�ťզr���C������[^\f\n\r\t\v]�C
    \t �ǰt�@�ӻs���šC������\x09�M\cI�C
    \v �ǰt�@�ӫ����s���šC������\x0b�M\cK�C
    \w �ǰt�]�A�U���u���������r���C������u[A-Za-z0-9_]�v�C
    \W �ǰt����D����r���C������u[^A-Za-z0-9_]�v�C
    \xn �ǰtn�A�䤤n���Q���i����q�ȡC�Q���i����q�ȥ������T�w����ӼƦr���C�Ҧp�A�u\x41�v�ǰt�uA�v�C�u\x041�v�h������u\x04�v&�u1�v�C���h���F�����i�H�ϥ�ASCII�s�X�C.
    \num �ǰtnum�A�䤤num�O�@�ӥ���ơC���������ǰt���ޥΡC�Ҧp�A�u(.)\1�v�ǰt��ӳs�򪺬ۦP�r���C
    \n ���Ѥ@�ӤK�i����q�ȩΤ@�ӦV��ޥΡC�p�G\n���e�ܤ�n��������l���F���A�hn���V��ޥΡC�_�h�A�p�Gn���K�i��Ʀr(0-7)�A�hn���@�ӤK�i����q�ȡC
    \nm ���Ѥ@�ӤK�i����q�ȩΤ@�ӦV��ޥΡC�p�G\nm���e�ܤ֦�nm����o�l���F���A�hnm���V��ޥΡC�p�G\nm���e�ܤ֦�n������A�hn���@�ӫ���rm���V��ޥΡC�p�G�e�������󳣤������A�Yn�Mm�����K�i��Ʀr(0-7)�A�h\nm�N�ǰt�K�i����q��nm�C
    \nml �p�Gn���K�i��Ʀr(0-3)�A�Bm�Ml�����K�i��Ʀr(0-7)�A�h�ǰt�K�i����q��nml�C
    \un �ǰtn�A�䤤n�O�@�ӥΥ|�ӤQ���i��Ʀr���ܪ�Unicode�r���C�Ҧp�A\u00A9�ǰt���v�Ÿ��]©ï¿½^�C


    [�s��] �d��



    • �H�U�HPHP���y�k�Ҽg���d��

      • ���Ҧr��O�_�u�t�Ʀr�P�^��, �r����רæb4~16�Ӧr������





    $str = 'a1234';
    if (ereg_match("^[a-zA-Z0-9]{4,16}$", $str)) {
    echo "���Ҧ��\";
    } else {
    echo "���ҥ���";
    }
    ?>




      • ²�����x�W�Ϫ����Ҩ����r������





    $str = 'a1234';
    if (ereg_match("^[A-Z]{1}[1-2]{1}[0-9]{8}$", $str)) {
    echo "���Ҧ��\";
    } else {
    echo "���ҥ���";
    }
    ?>







    2 �Ӧ���Gphp �s��
    �o���ɶ��G2007-05-09
    [���|]

    ���W���ܪk

    �q��
    * - �s�өΥH�W - a*
    + - �@�өΥH�W - a+
    ? - �s�өΤ@�� - a?
    {n} - n �� - a{3}
    {n,} - �ܤ� n �� - a{3,}
    {,n} - �̦h n �� - a{,3}
    {n1, n2} - �̤� n1 �ӡA���h�� n2 �� - a{1,2}
    �d�ҡG
    p.*t - p �M�����ƶq���r���A�b t ���e
    p.*?t - p �M��ּ̤ƶq���r���A�b t ���e

    �r������ []
    [ab] �|�۰t a �� b
    [ab]+ �|�۰t���� a �� b ���r��
    [a-z] �|�۰t����p�g�r��
    [A-Z] �|�۰t����j�g�r��
    [0-9] �|�۰t����Ʀr
    [a-z5] �|�۰t����p�g�r���μƦr 5

    �D�r�� ^
    [^A-Z] �|�۰t����D�j�g���r��

    ����r��
    \d ����Ʀr
    \D ����D�Ʀr
    \s ����ťզr��
    \S ����D�ťզr��
    \w ����r���Ʀr (�]�A���u _ )
    \W ����D�r���Ʀr�Ω��u

    \A �r��}�Y
    \b �r��d��
    \B �D�r��d��
    \Z �r��� (�۰t�̫᪺�s��r���Φr��)
    \z �r��� (�u�۰t�r��)



    �@�@ 2 �H�^���@�@��ܭ��� �i��1 ���j 

    �m�W�G
    �G�i���e�G