{"id":3465,"date":"2025-03-24T08:46:07","date_gmt":"2025-03-23T23:46:07","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=3465"},"modified":"2025-03-24T08:46:37","modified_gmt":"2025-03-23T23:46:37","slug":"%e3%80%90%e5%ae%9f%e8%b7%b5%e3%80%91php-preg_match%ef%bc%9a%e5%88%9d%e5%bf%83%e8%80%85%e3%81%8b%e3%82%89%e4%b8%8a%e7%b4%9a%e8%80%85%e3%81%be%e3%81%a7%e4%bd%bf%e3%81%88%e3%82%8b7%e3%81%a4%e3%81%ae","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=3465","title":{"rendered":"\u3010\u5b9f\u8df5\u3011PHP preg_match\uff1a\u521d\u5fc3\u8005\u304b\u3089\u4e0a\u7d1a\u8005\u307e\u3067\u4f7f\u3048\u308b7\u3064\u306e\u5fc5\u9808\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"\n<p>Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u304a\u3044\u3066\u3001\u6587\u5b57\u5217\u64cd\u4f5c\u306f\u907f\u3051\u3066\u901a\u308c\u306a\u3044\u91cd\u8981\u306a\u51e6\u7406\u306e\u4e00\u3064\u3067\u3059\u3002\u7279\u306b\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u691c\u8a3c\u3084\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u306e\u60c5\u5831\u62bd\u51fa\u306a\u3069\u3001\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u304c\u5fc5\u8981\u306a\u5834\u9762\u3067\u306f\u6b63\u898f\u8868\u73fe\u306e\u77e5\u8b58\u304c\u4e0d\u53ef\u6b20\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>PHP\u3067\u306f<code>preg_match<\/code>\u95a2\u6570\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u5f37\u529b\u306a\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u95a2\u6570\u4e00\u3064\u3092\u30de\u30b9\u30bf\u30fc\u3059\u308b\u3060\u3051\u3067\u3001\u30d5\u30a9\u30fc\u30e0\u5165\u529b\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u304b\u3089HTML\u30b9\u30af\u30ec\u30a4\u30d4\u30f3\u30b0\u3001URL\u89e3\u6790\u307e\u3067\u3001\u69d8\u3005\u306a\u51e6\u7406\u3092\u52b9\u7387\u7684\u306b\u5b9f\u88c5\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3057\u304b\u3057\u3001\u6b63\u898f\u8868\u73fe\u306f\u300c\u66f8\u3044\u3066\u7406\u89e3\u3059\u308b\u306e\u304c\u96e3\u3057\u3044\u8a00\u8a9e\u300d\u3068\u3082\u8a00\u308f\u308c\u308b\u307b\u3069\u3001\u7fd2\u5f97\u306e\u96e3\u6613\u5ea6\u304c\u9ad8\u3044\u3053\u3068\u3067\u3082\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002\u672c\u8a18\u4e8b\u3067\u306f\u3001PHP\u958b\u767a\u8005\u304c\u65e5\u5e38\u7684\u306b\u76f4\u9762\u3059\u308b\u8ab2\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306e<code>preg_match<\/code>\u95a2\u6570\u306e\u6d3b\u7528\u6cd5\u3092\u3001\u57fa\u672c\u304b\u3089\u5fdc\u7528\u307e\u30677\u3064\u306e\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af\u3068\u3057\u3066\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u521d\u5fc3\u8005\u306e\u65b9\u306b\u306f\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u304b\u3089\u4e01\u5be7\u306b\u89e3\u8aac\u3057\u3001\u4e2d\u7d1a\u8005\u4ee5\u4e0a\u306e\u65b9\u306b\u306f\u6700\u9069\u5316\u3084\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306a\u3069\u306e\u9ad8\u5ea6\u306a\u77e5\u8b58\u3082\u63d0\u4f9b\u3057\u3066\u3044\u304d\u307e\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3092\u8aad\u307f\u7d42\u3048\u308b\u3053\u308d\u306b\u306f\u3001\u3042\u306a\u305f\u306ePHP\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30b9\u30ad\u30eb\u306f\u78ba\u5b9f\u306b\u4e00\u6bb5\u968e\u4e0a\u306e\u30ec\u30d9\u30eb\u3078\u3068\u9032\u5316\u3057\u3066\u3044\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">PHP preg_match\u3068\u306f\uff1f\u57fa\u672c\u304b\u3089\u7406\u89e3\u3059\u308b\u6b63\u898f\u8868\u73fe\u30de\u30c3\u30c1\u30f3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">preg_match\u95a2\u6570\u306e\u57fa\u672c\u69cb\u6587\u3068\u5f15\u6570\u306e\u610f\u5473<\/a>      <\/li>      <li>        <a href=\"#i-2\">\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u306e\u57fa\u672c\u30eb\u30fc\u30eb\u3068\u7279\u6b8a\u6587\u5b57<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-7\">preg_match_all\u3068\u306e\u9055\u3044\u3068\u305d\u308c\u305e\u308c\u306e\u4f7f\u3044\u5206\u3051<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-11\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af1\uff1a\u30d5\u30a9\u30fc\u30e0\u5165\u529b\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3067\u6d3b\u7528\u3059\u308b<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-12\">\u57fa\u672c\u7684\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u5b9f\u88c5<\/a>      <\/li>      <li>        <a href=\"#i-13\">\u30d5\u30a9\u30fc\u30e0\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u8df5\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1<\/a>      <\/li>      <li>        <a href=\"#i-14\">\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306b\u304a\u3051\u308b\u6ce8\u610f\u70b9<\/a>      <\/li>      <li>        <a href=\"#i-15\">\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u5f62\u5f0f\u30c1\u30a7\u30c3\u30af\u3092\u5b9f\u88c5\u3059\u308b\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-20\">\u30d1\u30b9\u30ef\u30fc\u30c9\u5f37\u5ea6\u306e\u691c\u8a3c\u3092\u52b9\u7387\u7684\u306b\u884c\u3046<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-25\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af2\uff1a\u30c6\u30ad\u30b9\u30c8\u5185\u306e\u7279\u5b9a\u60c5\u5831\u3092\u62bd\u51fa\u3059\u308b<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-26\">\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u3092\u4f7f\u3063\u305f\u57fa\u672c\u7684\u306a\u62bd\u51fa<\/a>      <\/li>      <li>        <a href=\"#i-27\">\u540d\u524d\u4ed8\u304d\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7<\/a>      <\/li>      <li>        <a href=\"#i-28\">\u8907\u6570\u306e\u4e00\u81f4\u3092\u62bd\u51fa\u3059\u308b<\/a>      <\/li>      <li>        <a href=\"#i-29\">\u5b9f\u8df5\u7684\u306a\u5fdc\u7528\u4f8b: \u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790<\/a>      <\/li>      <li>        <a href=\"#i-30\">HTML\u304b\u3089\u7279\u5b9a\u306e\u8981\u7d20\u3084\u5c5e\u6027\u3092\u62bd\u51fa\u3059\u308b\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-37\">\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u65e5\u4ed8\u3084\u6570\u5024\u3092\u52b9\u7387\u7684\u306b\u62bd\u51fa\u3059\u308b\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-41\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af3\uff1aURL\u89e3\u6790\u3068\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u62bd\u51fa\u3092\u884c\u3046<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-42\">URL\u306e\u57fa\u672c\u69cb\u9020<\/a>      <\/li>      <li>        <a href=\"#i-43\">PHP\u306e\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u3092\u6d3b\u7528\u3059\u308b<\/a>      <\/li>      <li>        <a href=\"#i-44\">\u6b63\u898f\u8868\u73fe\u306b\u3088\u308bURL\u691c\u8a3c<\/a>      <\/li>      <li>        <a href=\"#i-45\">\u6b63\u898f\u8868\u73fe\u306b\u3088\u308bURL\u5206\u89e3<\/a>      <\/li>      <li>        <a href=\"#i-46\">\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u500b\u5225\u62bd\u51fa<\/a>      <\/li>      <li>        <a href=\"#i-47\">URL\u306e\u5f62\u5f0f\u3092\u691c\u8a3c\u3059\u308b\u30b7\u30f3\u30d7\u30eb\u3067\u5805\u7262\u306a\u30d1\u30bf\u30fc\u30f3<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-54\">\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6b63\u78ba\u306b\u62bd\u51fa\u3059\u308b\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-61\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af4\uff1a\u6587\u5b57\u5217\u7f6e\u63db\u3068\u7d44\u307f\u5408\u308f\u305b\u305f\u9ad8\u5ea6\u306a\u51e6\u7406<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-62\">\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u3068\u7f6e\u63db\u306e\u9023\u643a<\/a>      <\/li>      <li>        <a href=\"#i-63\">\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u69cb\u7bc9<\/a>      <\/li>      <li>        <a href=\"#i-64\">\u5f8c\u65b9\u53c2\u7167\u3092\u6d3b\u7528\u3057\u305f\u9ad8\u5ea6\u306a\u7f6e\u63db<\/a>      <\/li>      <li>        <a href=\"#i-65\">\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u306b\u3088\u308b\u52d5\u7684\u306a\u7f6e\u63db<\/a>      <\/li>      <li>        <a href=\"#i-66\">\u30de\u30c3\u30c1\u30f3\u30b0\u3068\u7f6e\u63db\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\u306e\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-70\">\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u3092\u6d3b\u7528\u3057\u305f\u52d5\u7684\u306a\u6587\u5b57\u5217\u51e6\u7406<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-78\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af5\uff1a\u5927\u91cf\u30c7\u30fc\u30bf\u51e6\u7406\u3067\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-79\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u8981\u7d20<\/a>      <\/li>      <li>        <a href=\"#i-80\">\u52b9\u7387\u7684\u306a\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u306e\u8a2d\u8a08<\/a>      <\/li>      <li>        <a href=\"#i-81\">\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u518d\u5229\u7528\u3059\u308b<\/a>      <\/li>      <li>        <a href=\"#i-82\">\u5927\u91cf\u30c7\u30fc\u30bf\u3092\u5206\u5272\u3057\u3066\u51e6\u7406\u3059\u308b\u6226\u7565<\/a>      <\/li>      <li>        <a href=\"#i-83\">\u6b63\u898f\u8868\u73fe\u306e\u4ee3\u66ff\u624b\u6bb5\u3092\u691c\u8a0e\u3059\u308b<\/a>      <\/li>      <li>        <a href=\"#i-84\">\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u518d\u5229\u7528\u3059\u308b\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-88\">\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u3092\u5206\u5272\u3057\u3066\u51e6\u7406\u3059\u308b\u6226\u7565<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-93\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af6\uff1a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u8003\u616e\u3057\u305fpreg_match\u306e\u4f7f\u3044\u65b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-94\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u6b63\u898f\u8868\u73fe\u306e\u95a2\u4fc2<\/a>      <\/li>      <li>        <a href=\"#i-95\">\u5b89\u5168\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30d1\u30bf\u30fc\u30f3\u306e\u8a2d\u8a08<\/a>      <\/li>      <li>        <a href=\"#i-96\">\u8907\u6570\u5c64\u9632\u5fa1\u306e\u5b9f\u88c5<\/a>      <\/li>      <li>        <a href=\"#i-97\">\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af<\/a>      <\/li>      <li>        <a href=\"#i-98\">\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a<\/a>      <\/li>      <li>        <a href=\"#i-99\">\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u691c\u8a3c\u3067\u9665\u308a\u304c\u3061\u306a\u843d\u3068\u3057\u7a74\u3068\u5bfe\u7b56<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-106\">\u6b63\u898f\u8868\u73feDoS\u653b\u6483\uff08ReDoS\uff09\u3092\u9632\u3050\u30d1\u30bf\u30fc\u30f3\u8a2d\u8a08<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-111\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af7\uff1a\u30c7\u30d0\u30c3\u30b0\u3068\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\u5bfe\u5fdc<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-112\">\u4e00\u822c\u7684\u306a\u6b63\u898f\u8868\u73fe\u30a8\u30e9\u30fc\u3068\u305d\u306e\u539f\u56e0<\/a>      <\/li>      <li>        <a href=\"#i-113\">preg_last_error\u3092\u6d3b\u7528\u3057\u305f\u30a8\u30e9\u30fc\u306e\u7279\u5b9a\u3068\u89e3\u6c7a\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-114\">\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u306e\u30c7\u30d0\u30c3\u30b0\u624b\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-115\">\u5916\u90e8\u30c4\u30fc\u30eb\u306e\u6d3b\u7528<\/a>      <\/li>      <li>        <a href=\"#i-116\">PHP\u306e\u8a2d\u5b9a\u8abf\u6574<\/a>      <\/li>      <li>        <a href=\"#i-117\">preg_last_error\u3092\u6d3b\u7528\u3057\u305f\u30a8\u30e9\u30fc\u306e\u7279\u5b9a\u3068\u89e3\u6c7a\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-122\">\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u306e\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u3067\u306e\u30c7\u30d0\u30c3\u30b0<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-128\">PHP preg_match\u306b\u95a2\u3059\u308b\u3088\u304f\u3042\u308b\u8cea\u554f<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-129\">preg_match\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306fstrpos\u3068\u6bd4\u3079\u3066\u3069\u3046\u306a\u306e\u304b\uff1f<\/a>      <\/li>      <li>        <a href=\"#i-130\">\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u3067preg_match\u3092\u4f7f\u3046\u969b\u306e\u6ce8\u610f\u70b9\u306f\uff1f<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-131\">\u6b63\u898f\u8868\u73fe\u306e\u5b66\u7fd2\u306b\u304a\u3059\u3059\u3081\u306e\u30ea\u30bd\u30fc\u30b9\u306f\uff1f<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-132\">\u6b63\u898f\u8868\u73fe\u306e\u30c6\u30b9\u30c8\u624b\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-133\">preg_match\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306fstrpos\u3068\u6bd4\u3079\u3066\u3069\u3046\u306a\u306e\u304b\uff1f<\/a>      <\/li>      <li>        <a href=\"#i-138\">\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u3067preg_match\u3092\u4f7f\u3046\u969b\u306e\u6ce8\u610f\u70b9\u306f\uff1f<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-144\">\u6b63\u898f\u8868\u73fe\u306e\u5b66\u7fd2\u306b\u304a\u3059\u3059\u3081\u306e\u30ea\u30bd\u30fc\u30b9\u306f\uff1f<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-150\">\u307e\u3068\u3081\uff1aPHP preg_match\u3092\u30de\u30b9\u30bf\u30fc\u3059\u308b\u305f\u3081\u306e\u6b21\u306e\u30b9\u30c6\u30c3\u30d7<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-151\">\u30b9\u30ad\u30eb\u30ec\u30d9\u30eb\u5225\u306e\u6b21\u306e\u30b9\u30c6\u30c3\u30d7<\/a>      <\/li>      <li>        <a href=\"#i-155\">\u52b9\u679c\u7684\u306a\u30de\u30b9\u30bf\u30fc\u3078\u306e\u9053\u7b4b<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-156\">\u5b9f\u8df5\u7684\u306a\u30a2\u30c9\u30d0\u30a4\u30b9<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">PHP preg_match\u3068\u306f\uff1f\u57fa\u672c\u304b\u3089\u7406\u89e3\u3059\u308b\u6b63\u898f\u8868\u73fe\u30de\u30c3\u30c1\u30f3\u30b0<\/h2>\n\n\n\n<p>PHP\u306b\u304a\u3051\u308b<code>preg_match<\/code>\u95a2\u6570\u306f\u3001\u6587\u5b57\u5217\u304c\u7279\u5b9a\u306e\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u306b\u4e00\u81f4\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u8abf\u3079\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306a\u95a2\u6570\u3067\u3059\u3002Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u304a\u3044\u3066\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u691c\u8a3c\u3084\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\u306a\u3069\u3001\u69d8\u3005\u306a\u5834\u9762\u3067\u6d3b\u8e8d\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u95a2\u6570\u306f\u300cPerl\u4e92\u63db\u6b63\u898f\u8868\u73fe\uff08PCRE: Perl Compatible Regular Expressions\uff09\u300d\u3092\u63a1\u7528\u3057\u3066\u304a\u308a\u3001\u975e\u5e38\u306b\u5f37\u529b\u3067\u67d4\u8edf\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u57fa\u672c\u7684\u306a\u69cb\u6587\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">int preg_match(string $pattern, string $subject, array &amp;$matches = null, int $flags = 0, int $offset = 0)\n<\/pre>\n\n\n\n<p><code>preg_match<\/code>\u95a2\u6570\u306f\u691c\u7d22\u5bfe\u8c61\u6587\u5b57\u5217\uff08<code>$subject<\/code>\uff09\u304c\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\uff08<code>$pattern<\/code>\uff09\u306b\u4e00\u81f4\u3059\u308b\u5834\u5408\u306b<code>1<\/code>\u3092\u8fd4\u3057\u3001\u4e00\u81f4\u3057\u306a\u3044\u5834\u5408\u306f<code>0<\/code>\u3092\u8fd4\u3057\u307e\u3059\u3002\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f<code>false<\/code>\u3092\u8fd4\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u6700\u3082\u30b7\u30f3\u30d7\u30eb\u306a\u4f7f\u7528\u4f8b\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"Hello, PHP World!\";\n$pattern = \"\/PHP\/\";\n$result = preg_match($pattern, $text);\n\nif ($result === 1) {\n    echo \"\u30d1\u30bf\u30fc\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\";  \/\/ \u3053\u306e\u884c\u304c\u5b9f\u884c\u3055\u308c\u308b\n} elseif ($result === 0) {\n    echo \"\u30d1\u30bf\u30fc\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\";\n} else {\n    echo \"\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\";\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u4f8b\u3067\u306f\u3001\u6587\u5b57\u5217\u300cHello, PHP World!\u300d\u306e\u4e2d\u306b\u300cPHP\u300d\u3068\u3044\u3046\u30d1\u30bf\u30fc\u30f3\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3044\u307e\u3059\u3002\u30d1\u30bf\u30fc\u30f3\u306f\u5e38\u306b\u30c7\u30ea\u30df\u30bf\uff08\u3053\u306e\u4f8b\u3067\u306f\u300c\/\u300d\uff09\u3067\u56f2\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p><code>preg_match<\/code>\u95a2\u6570\u306e\u7279\u5fb4\u3068\u3057\u3066\u3001\u6700\u521d\u306b\u30de\u30c3\u30c1\u3057\u305f\u4e00\u7b87\u6240\u306e\u307f\u3092\u691c\u51fa\u3059\u308b\u3068\u3044\u3046\u70b9\u304c\u3042\u308a\u307e\u3059\u3002\u6587\u5b57\u5217\u5168\u4f53\u304b\u3089\u8907\u6570\u306e\u30de\u30c3\u30c1\u3092\u898b\u3064\u3051\u305f\u3044\u5834\u5408\u306f\u3001\u5f8c\u8ff0\u3059\u308b<code>preg_match_all<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u307e\u305f\u3001\u30de\u30c3\u30c1\u3057\u305f\u7d50\u679c\u3092\u8a73\u3057\u304f\u77e5\u308a\u305f\u3044\u5834\u5408\u306f\u3001\u7b2c3\u5f15\u6570\u306e<code>$matches<\/code>\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"PHP version 7.4\";\n$pattern = \"\/PHP version ([0-9]\\.[0-9])\/\";\n$matches = [];\n\npreg_match($pattern, $text, $matches);\n\nprint_r($matches);\n\/\/ \u51fa\u529b:\n\/\/ Array ( [0] =&gt; PHP version 7.4 [1] =&gt; 7.4 )\n<\/pre>\n\n\n\n<p>\u3053\u306e\u4f8b\u3067\u306f\u3001<code>$matches[0]<\/code>\u306b\u30d1\u30bf\u30fc\u30f3\u5168\u4f53\u306b\u30de\u30c3\u30c1\u3057\u305f\u6587\u5b57\u5217\u3001<code>$matches[1]<\/code>\u306b\u306f\u62ec\u5f27\u3067\u56f2\u307e\u308c\u305f\u90e8\u5206\uff08\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\uff09\u306b\u30de\u30c3\u30c1\u3057\u305f\u90e8\u5206\u304c\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u7279\u5b9a\u306e\u60c5\u5831\u3092\u7c21\u5358\u306b\u62bd\u51fa\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u306f\u591a\u304f\u306e\u7279\u6b8a\u6587\u5b57\u3084\u69cb\u6587\u3092\u6301\u3063\u3066\u304a\u308a\u3001\u3053\u308c\u3089\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002\u6b21\u306e\u30b5\u30d6\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u8981\u7d20\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">preg_match\u95a2\u6570\u306e\u57fa\u672c\u69cb\u6587\u3068\u5f15\u6570\u306e\u610f\u5473<\/h3>\n\n\n\n<p><code>preg_match<\/code>\u95a2\u6570\u306e\u5b8c\u5168\u306a\u69cb\u6587\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">int preg_match(string $pattern, string $subject, array &amp;$matches = null, int $flags = 0, int $offset = 0)\n<\/pre>\n\n\n\n<p>\u5404\u5f15\u6570\u306e\u610f\u5473\u3068\u4f7f\u3044\u65b9\u3092\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>$pattern\uff08\u5fc5\u9808\uff09<\/strong>: \u691c\u7d22\u3059\u308b\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3067\u3059\u3002\u30c7\u30ea\u30df\u30bf\uff08\u901a\u5e38\u306f\u300c\/\u300d\uff09\u3067\u56f2\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 <code>\/\/ \u300capple\u300d\u3068\u3044\u3046\u5358\u8a9e\u3092\u691c\u7d22\u3059\u308b\u30d1\u30bf\u30fc\u30f3 $pattern = \"\/apple\/\"; \/\/ \u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3057\u306a\u3044\u30d5\u30e9\u30b0\u300ci\u300d\u3092\u8ffd\u52a0 $pattern = \"\/apple\/i\";<\/code><\/li>\n\n\n\n<li><strong>$subject\uff08\u5fc5\u9808\uff09<\/strong>: \u691c\u7d22\u5bfe\u8c61\u306e\u6587\u5b57\u5217\u3067\u3059\u3002 <code>$subject = \"I like apples and oranges.\";<\/code><\/li>\n\n\n\n<li><strong>$matches\uff08\u7701\u7565\u53ef\uff09<\/strong>: \u30de\u30c3\u30c1\u3057\u305f\u7d50\u679c\u3092\u683c\u7d0d\u3059\u308b\u914d\u5217\u306e\u53c2\u7167\u3067\u3059\u3002\u7701\u7565\u3059\u308b\u3068\u7d50\u679c\u306f\u683c\u7d0d\u3055\u308c\u307e\u305b\u3093\u3002 <code>$matches = []; preg_match(\"\/a(p{2})le\/\", \"apple\", $matches); \/\/ $matches = [\"apple\", \"pp\"]<\/code><\/li>\n\n\n\n<li><strong>$flags\uff08\u7701\u7565\u53ef\uff09<\/strong>: \u52d5\u4f5c\u3092\u5236\u5fa1\u3059\u308b\u30d5\u30e9\u30b0\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5024\u304c\u3042\u308a\u307e\u3059\uff1a<ul><li><code>PREG_OFFSET_CAPTURE<\/code>: \u30de\u30c3\u30c1\u3057\u305f\u6587\u5b57\u5217\u3068\u4f4d\u7f6e\u3092\u914d\u5217\u3067\u8fd4\u3057\u307e\u3059<\/li><li><code>PREG_UNMATCHED_AS_NULL<\/code>: \u30de\u30c3\u30c1\u3057\u306a\u304b\u3063\u305f\u30b0\u30eb\u30fc\u30d7\u306f<code>null<\/code>\u3092\u8fd4\u3057\u307e\u3059<\/li><\/ul><code>preg_match(\"\/a(p{2})le\/\", \"apple\", $matches, PREG_OFFSET_CAPTURE); \/\/ $matches = [[\"apple\", 0], [\"pp\", 1]]<\/code><\/li>\n\n\n\n<li><strong>$offset\uff08\u7701\u7565\u53ef\uff09<\/strong>: \u691c\u7d22\u3092\u958b\u59cb\u3059\u308b\u4f4d\u7f6e\uff08\u30aa\u30d5\u30bb\u30c3\u30c8\uff09\u3067\u3059\u3002 <code>\/\/ \u6587\u5b57\u5217\u306e3\u6587\u5b57\u76ee\u304b\u3089\u691c\u7d22\u3092\u958b\u59cb preg_match(\"\/apple\/\", \"An apple a day\", $matches, 0, 3);<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u623b\u308a\u5024\u306f\u3001\u30d1\u30bf\u30fc\u30f3\u304c\u30de\u30c3\u30c1\u3057\u305f\u5834\u5408\u306f<code>1<\/code>\u3001\u30de\u30c3\u30c1\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u306f<code>0<\/code>\u3001\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f<code>false<\/code>\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$result = preg_match(\"\/[0-9]+\/\", \"abc123\");\n\/\/ $result = 1\uff08\u6570\u5b57\u3092\u542b\u3080\u305f\u3081\u30de\u30c3\u30c1\u3059\u308b\uff09\n\n$result = preg_match(\"\/[0-9]+\/\", \"abcdef\");\n\/\/ $result = 0\uff08\u6570\u5b57\u3092\u542b\u307e\u306a\u3044\u305f\u3081\u30de\u30c3\u30c1\u3057\u306a\u3044\uff09\n\n$result = preg_match(\"\/[0-9+\/\", \"123\");\n\/\/ $result = false\uff08\u30d1\u30bf\u30fc\u30f3\u304c\u4e0d\u6b63\u3067\u30a8\u30e9\u30fc\uff09\n<\/pre>\n\n\n\n<p>\u3053\u306e\u57fa\u672c\u69cb\u6587\u3068\u5f15\u6570\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001\u69d8\u3005\u306a\u30b7\u30ca\u30ea\u30aa\u306b\u5fdc\u3058\u3066<code>preg_match<\/code>\u95a2\u6570\u3092\u67d4\u8edf\u306b\u6d3b\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u306e\u57fa\u672c\u30eb\u30fc\u30eb\u3068\u7279\u6b8a\u6587\u5b57<\/h3>\n\n\n\n<p>PHP\u306e\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3092\u52b9\u679c\u7684\u306b\u4f7f\u3046\u305f\u3081\u306b\u306f\u3001\u57fa\u672c\u30eb\u30fc\u30eb\u3068\u7279\u6b8a\u6587\u5b57\uff08\u30e1\u30bf\u6587\u5b57\uff09\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-3\">\u30c7\u30ea\u30df\u30bf<\/h4>\n\n\n\n<p>\u307e\u305a\u3001PHP\u306e\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u306f\u5fc5\u305a\u30c7\u30ea\u30df\u30bf\u3067\u56f2\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30c7\u30ea\u30df\u30bf\u306b\u306f\u69d8\u3005\u306a\u6587\u5b57\u304c\u4f7f\u7528\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$pattern1 = \"\/apple\/\";  \/\/ \u30b9\u30e9\u30c3\u30b7\u30e5\u3092\u4f7f\u7528\n$pattern2 = \"#apple#\";  \/\/ \u30b7\u30e3\u30fc\u30d7\u3092\u4f7f\u7528\n$pattern3 = \"~apple~\";  \/\/ \u30c1\u30eb\u30c0\u3092\u4f7f\u7528\n<\/pre>\n\n\n\n<p>\u30c7\u30ea\u30df\u30bf\u306e\u5f8c\u306b\u306f\u4fee\u98fe\u5b50\uff08\u30d5\u30e9\u30b0\uff09\u3092\u4ed8\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$pattern = \"\/apple\/i\";  \/\/ i\u30d5\u30e9\u30b0\uff1a\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3057\u306a\u3044\n$pattern = \"\/apple\/m\";  \/\/ m\u30d5\u30e9\u30b0\uff1a\u8907\u6570\u884c\u30e2\u30fc\u30c9\n$pattern = \"\/apple\/s\";  \/\/ s\u30d5\u30e9\u30b0\uff1a\u30c9\u30c3\u30c8\u304c\u6539\u884c\u306b\u3082\u30de\u30c3\u30c1\u3059\u308b\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-4\">\u7279\u6b8a\u6587\u5b57\uff08\u30e1\u30bf\u6587\u5b57\uff09<\/h4>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u306b\u306f\u69d8\u3005\u306a\u7279\u6b8a\u6587\u5b57\u304c\u3042\u308a\u3001\u3053\u308c\u3089\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n<div id=\"id-7c282ba4-c315-40fa-84e3-2a0be7c0c7d1\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u7279\u6b8a\u6587\u5b57<\/th><th>\u610f\u5473<\/th><\/tr><\/thead><tbody><tr><td><code>.<\/code><\/td><td>\u6539\u884c\u3092\u9664\u304f\u4efb\u610f\u306e1\u6587\u5b57<\/td><\/tr><tr><td><code>^<\/code><\/td><td>\u884c\u306e\u5148\u982d<\/td><\/tr><tr><td>`<\/td><td>\u884c\u306e\u672b\u5c3e<\/td><\/tr><tr><td><code>\\d<\/code><\/td><td>\u6570\u5b571\u6587\u5b57\uff08[0-9]\u3068\u540c\u7b49\uff09<\/td><\/tr><tr><td><code>\\D<\/code><\/td><td>\u6570\u5b57\u4ee5\u5916\u306e1\u6587\u5b57<\/td><\/tr><tr><td><code>\\w<\/code><\/td><td>\u5358\u8a9e\u69cb\u6210\u6587\u5b57\uff08[a-zA-Z0-9_]\u3068\u540c\u7b49\uff09<\/td><\/tr><tr><td><code>\\W<\/code><\/td><td>\u5358\u8a9e\u69cb\u6210\u6587\u5b57\u4ee5\u5916<\/td><\/tr><tr><td><code>\\s<\/code><\/td><td>\u7a7a\u767d\u6587\u5b57\uff08\u30b9\u30da\u30fc\u30b9\u3001\u30bf\u30d6\u3001\u6539\u884c\u306a\u3069\uff09<\/td><\/tr><tr><td><code>\\S<\/code><\/td><td>\u7a7a\u767d\u6587\u5b57\u4ee5\u5916<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"i-5\">\u91cf\u6307\u5b9a\u5b50<\/h4>\n\n\n\n<p>\u6587\u5b57\u3084\u30d1\u30bf\u30fc\u30f3\u306e\u7e70\u308a\u8fd4\u3057\u3092\u6307\u5b9a\u3059\u308b\u305f\u3081\u306e\u8a18\u53f7\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$pattern = \"\/a*\/\";    \/\/ 'a'\u304c0\u56de\u4ee5\u4e0a\u7e70\u308a\u8fd4\u3057\n$pattern = \"\/a+\/\";    \/\/ 'a'\u304c1\u56de\u4ee5\u4e0a\u7e70\u308a\u8fd4\u3057\n$pattern = \"\/a?\/\";    \/\/ 'a'\u304c0\u56de\u307e\u305f\u306f1\u56de\n$pattern = \"\/a{3}\/\";  \/\/ 'a'\u304c\u6b63\u78ba\u306b3\u56de\n$pattern = \"\/a{2,4}\/\"; \/\/ 'a'\u304c2\u56de\u4ee5\u4e0a4\u56de\u4ee5\u4e0b\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-6\">\u6587\u5b57\u30af\u30e9\u30b9\u3068\u30b0\u30eb\u30fc\u30d7\u5316<\/h4>\n\n\n\n<p>\u89d2\u62ec\u5f27<code>[]<\/code>\u3092\u4f7f\u3046\u3068\u6587\u5b57\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3067\u304d\u3001\u4e38\u62ec\u5f27<code>()<\/code>\u3092\u4f7f\u3046\u3068\u30b0\u30eb\u30fc\u30d7\u5316\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$pattern = \"\/[abc]\/\";    \/\/ 'a'\u307e\u305f\u306f'b'\u307e\u305f\u306f'c'\n$pattern = \"\/[^abc]\/\";   \/\/ 'a'\u3001'b'\u3001'c'\u4ee5\u5916\u306e\u6587\u5b57\n$pattern = \"\/[a-z]\/\";    \/\/ 'a'\u304b\u3089'z'\u307e\u3067\u306e\u6587\u5b57\n\n$pattern = \"\/(ab)+\/\";    \/\/ 'ab'\u304c1\u56de\u4ee5\u4e0a\u7e70\u308a\u8fd4\u3057\n$pattern = \"\/(?:ab)+\/\";  \/\/ \u540c\u4e0a\u3060\u304c\u3001\u7d50\u679c\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u3057\u306a\u3044\n$pattern = \"\/a|b\/\";      \/\/ 'a'\u307e\u305f\u306f'b'\n<\/pre>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001\u5358\u7d14\u306a\u30de\u30c3\u30c1\u30f3\u30b0\u304b\u3089\u8907\u96d1\u306a\u30c6\u30ad\u30b9\u30c8\u691c\u8a3c\u307e\u3067\u3001\u5e45\u5e83\u3044\u7528\u9014\u306b<code>preg_match<\/code>\u3092\u6d3b\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-7\">preg_match_all\u3068\u306e\u9055\u3044\u3068\u305d\u308c\u305e\u308c\u306e\u4f7f\u3044\u5206\u3051<\/h3>\n\n\n\n<p>PHP\u3067\u6b63\u898f\u8868\u73fe\u3092\u6271\u3046\u969b\u3001<code>preg_match<\/code>\u3068<code>preg_match_all<\/code>\u306e\u9055\u3044\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002\u4e21\u8005\u306e\u4e3b\u306a\u9055\u3044\u306f\u300c\u4e00\u81f4\u3059\u308b\u30d1\u30bf\u30fc\u30f3\u3092\u3044\u304f\u3064\u53d6\u5f97\u3059\u308b\u304b\u300d\u3068\u3044\u3046\u70b9\u306b\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-8\">\u57fa\u672c\u7684\u306a\u9055\u3044<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>preg_match<\/strong>: \u6700\u521d\u306b\u4e00\u81f4\u3057\u305f\u30d1\u30bf\u30fc\u30f3\u306e\u307f\u3092\u8fd4\u3057\u307e\u3059<\/li>\n\n\n\n<li><strong>preg_match_all<\/strong>: \u30d1\u30bf\u30fc\u30f3\u306b\u4e00\u81f4\u3059\u308b\u3059\u3079\u3066\u306e\u90e8\u5206\u3092\u8fd4\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<p>\u69cb\u6587\u306f\u975e\u5e38\u306b\u4f3c\u3066\u3044\u307e\u3059\u304c\u3001\u623b\u308a\u5024\u3068<code>$matches<\/code>\u914d\u5217\u306e\u69cb\u9020\u304c\u7570\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u6587\u7ae0\u4e2d\u306e\u6570\u5b57\u3092\u63a2\u3059\u4f8b\n$text = \"We have 3 apples and 5 oranges.\";\n$pattern = \"\/\\d\/\";  \/\/ \u6570\u5b57\u306b\u30de\u30c3\u30c1\u3059\u308b\u30d1\u30bf\u30fc\u30f3\n\n\/\/ preg_match\uff08\u6700\u521d\u306e\u4e00\u81f4\u306e\u307f\uff09\npreg_match($pattern, $text, $matches1);\nprint_r($matches1);\n\/\/ \u51fa\u529b: Array ( [0] =&gt; 3 )\n\n\/\/ preg_match_all\uff08\u3059\u3079\u3066\u306e\u4e00\u81f4\uff09\npreg_match_all($pattern, $text, $matches2);\nprint_r($matches2);\n\/\/ \u51fa\u529b: Array ( [0] =&gt; Array ( [0] =&gt; 3 [1] =&gt; 5 ) )\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-9\">$matches\u914d\u5217\u306e\u69cb\u9020\u306e\u9055\u3044<\/h4>\n\n\n\n<p>\u3088\u308a\u8907\u96d1\u306a\u4f8b\u3067\u4e21\u95a2\u6570\u306e\u9055\u3044\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"Email me at john@example.com or visit jane@website.org\";\n$pattern = \"\/([a-z]+)@([a-z\\.]+)\/i\";\n\n\/\/ preg_match\uff08\u6700\u521d\u306e\u4e00\u81f4\u306e\u307f\uff09\npreg_match($pattern, $text, $matches1);\nprint_r($matches1);\n\/*\n\u51fa\u529b:\nArray (\n    [0] =&gt; john@example.com\n    [1] =&gt; john\n    [2] =&gt; example.com\n)\n*\/\n\n\/\/ preg_match_all\uff08\u3059\u3079\u3066\u306e\u4e00\u81f4\uff09\npreg_match_all($pattern, $text, $matches2);\nprint_r($matches2);\n\/*\n\u51fa\u529b:\nArray (\n    [0] =&gt; Array ( [0] =&gt; john@example.com [1] =&gt; jane@website.org )\n    [1] =&gt; Array ( [0] =&gt; john [1] =&gt; jane )\n    [2] =&gt; Array ( [0] =&gt; example.com [1] =&gt; website.org )\n)\n*\/\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-10\">\u4f7f\u3044\u5206\u3051\u306e\u30dd\u30a4\u30f3\u30c8<\/h4>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5834\u5408\u306b\u9069\u5207\u306a\u95a2\u6570\u3092\u9078\u3073\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n<div id=\"id-26c9d724-1cc8-4a08-8748-2f483390904a\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30b7\u30ca\u30ea\u30aa<\/th><th>\u63a8\u5968\u3055\u308c\u308b\u95a2\u6570<\/th><\/tr><\/thead><tbody><tr><td>\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u5f62\u5f0f\u691c\u8a3c<\/td><td>preg_match<\/td><\/tr><tr><td>\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u6709\u52b9\u6027\u78ba\u8a8d<\/td><td>preg_match<\/td><\/tr><tr><td>\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u3059\u3079\u3066\u62bd\u51fa<\/td><td>preg_match_all<\/td><\/tr><tr><td>HTML\u30bf\u30b0\u3092\u3059\u3079\u3066\u898b\u3064\u3051\u308b<\/td><td>preg_match_all<\/td><\/tr><tr><td>URL\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u306e\u78ba\u8a8d<\/td><td>preg_match<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u89b3\u70b9\u304b\u3089\u3082\u3001\u5fc5\u8981\u306a\u30de\u30c3\u30c1\u3060\u3051\u3092\u53d6\u5f97\u3057\u305f\u3044\u5834\u5408\u306f<code>preg_match<\/code>\u3092\u4f7f\u3046\u307b\u3046\u304c\u52b9\u7387\u7684\u3067\u3059\u3002<code>preg_match<\/code>\u306f\u6700\u521d\u306e\u4e00\u81f4\u3092\u898b\u3064\u3051\u305f\u6642\u70b9\u3067\u51e6\u7406\u3092\u7d42\u4e86\u3059\u308b\u305f\u3081\u3001\u4e00\u822c\u7684\u306b<code>preg_match_all<\/code>\u3088\u308a\u3082\u9ad8\u901f\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-11\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af1\uff1a\u30d5\u30a9\u30fc\u30e0\u5165\u529b\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3067\u6d3b\u7528\u3059\u308b<\/h2>\n\n\n\n<p>Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u4e0a\u3067\u907f\u3051\u3066\u901a\u308c\u306a\u3044\u306e\u304c\u3001\u30e6\u30fc\u30b6\u30fc\u304b\u3089\u306e\u30d5\u30a9\u30fc\u30e0\u5165\u529b\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\uff08\u691c\u8a3c\uff09\u3067\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u304c\u5165\u529b\u3057\u305f\u30c7\u30fc\u30bf\u304c\u671f\u5f85\u3059\u308b\u5f62\u5f0f\u3067\u3042\u308b\u304b\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u4fe1\u983c\u6027\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306b\u4e0d\u53ef\u6b20\u3067\u3059\u3002<\/p>\n\n\n\n<p><code>preg_match<\/code>\u95a2\u6570\u306f\u3001\u3053\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3092\u52b9\u7387\u7684\u304b\u3064\u67d4\u8edf\u306b\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306e\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3068\u306a\u308a\u307e\u3059\u3002\u6b63\u898f\u8868\u73fe\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u5358\u7d14\u306a\u5165\u529b\u30c1\u30a7\u30c3\u30af\u304b\u3089\u8907\u96d1\u306a\u5f62\u5f0f\u691c\u8a3c\u307e\u3067\u3001\u5e45\u5e83\u3044\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">\u57fa\u672c\u7684\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u5b9f\u88c5<\/h3>\n\n\n\n<p>\u30b7\u30f3\u30d7\u30eb\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * \u5165\u529b\u5024\u304c\u6307\u5b9a\u3055\u308c\u305f\u30d1\u30bf\u30fc\u30f3\u306b\u4e00\u81f4\u3059\u308b\u304b\u3092\u691c\u8a3c\u3059\u308b\n * \n * @param string $input \u691c\u8a3c\u3059\u308b\u5165\u529b\u5024\n * @param string $pattern \u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\n * @return bool \u691c\u8a3c\u7d50\u679c\uff08true: \u4e00\u81f4\u3059\u308b\u3001false: \u4e00\u81f4\u3057\u306a\u3044\uff09\n *\/\nfunction validateInput($input, $pattern) {\n    return preg_match($pattern, $input) === 1;\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$email = \"user@example.com\";\nif (validateInput($email, \"\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/\")) {\n    echo \"\u6709\u52b9\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u3059\";\n} else {\n    echo \"\u7121\u52b9\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u3059\";\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u57fa\u672c\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u767a\u5c55\u3055\u305b\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u5805\u7262\u306a\u30d5\u30a9\u30fc\u30e0\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">\u30d5\u30a9\u30fc\u30e0\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u8df5\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1<\/h3>\n\n\n\n<p>\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u3092\u691c\u8a3c\u3059\u308b\u305f\u3081\u306e\u5b9f\u88c5\u4f8b\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function validateForm($data) {\n    $errors = [];\n    \n    \/\/ \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u691c\u8a3c\n    if (!validateInput($data['email'], \"\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/\")) {\n        $errors['email'] = \"\u6709\u52b9\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\";\n    }\n    \n    \/\/ \u96fb\u8a71\u756a\u53f7\u306e\u691c\u8a3c\uff08\u65e5\u672c\u306e\u5f62\u5f0f: 000-0000-0000\uff09\n    if (!validateInput($data['phone'], \"\/^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$\/\")) {\n        $errors['phone'] = \"\u6709\u52b9\u306a\u96fb\u8a71\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\";\n    }\n    \n    \/\/ \u90f5\u4fbf\u756a\u53f7\u306e\u691c\u8a3c\uff08\u65e5\u672c\u306e\u5f62\u5f0f: 000-0000\uff09\n    if (!validateInput($data['postal_code'], \"\/^\\d{3}-\\d{4}$\/\")) {\n        $errors['postal_code'] = \"\u6709\u52b9\u306a\u90f5\u4fbf\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\";\n    }\n    \n    return $errors;\n}\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306b\u304a\u3051\u308b\u6ce8\u610f\u70b9<\/h3>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u306b\u3088\u308b\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3059\u308b\u969b\u306f\u3001\u4ee5\u4e0b\u306e\u70b9\u306b\u6ce8\u610f\u3057\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u904e\u5ea6\u306b\u53b3\u683c\u306a\u30d1\u30bf\u30fc\u30f3\u306f\u907f\u3051\u308b<\/strong>: \u4f8b\u3048\u3070\u3001\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u5b8c\u5168\u306aRFC\u6e96\u62e0\u306e\u691c\u8a3c\u306f\u975e\u5e38\u306b\u8907\u96d1\u3067\u3059\u3002\u73fe\u5b9f\u7684\u306a\u59a5\u5354\u70b9\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u56fd\u969b\u7684\u306a\u9055\u3044\u3092\u8003\u616e\u3059\u308b<\/strong>: \u96fb\u8a71\u756a\u53f7\u3084\u90f5\u4fbf\u756a\u53f7\u306a\u3069\u306f\u56fd\u306b\u3088\u3063\u3066\u5f62\u5f0f\u304c\u7570\u306a\u308a\u307e\u3059\u3002\u5bfe\u8c61\u30e6\u30fc\u30b6\u30fc\u306b\u5408\u308f\u305b\u305f\u691c\u8a3c\u3092\u884c\u3044\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u5177\u4f53\u7684\u306b<\/strong>: \u30e6\u30fc\u30b6\u30fc\u304c\u4f55\u3092\u4fee\u6b63\u3059\u3079\u304d\u304b\u308f\u304b\u308b\u660e\u78ba\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3068\u30b5\u30cb\u30bf\u30a4\u30ba\u306e\u7d44\u307f\u5408\u308f\u305b<\/strong>: \u5165\u529b\u691c\u8a3c\u3060\u3051\u3067\u306a\u304f\u3001\u30c7\u30fc\u30bf\u306e\u7121\u5bb3\u5316\uff08\u30b5\u30cb\u30bf\u30a4\u30ba\uff09\u3082\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u5f37\u5316\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u3092\u4f7f\u3063\u305f\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u691c\u8a3c\u306b\u304a\u3044\u3066\u975e\u5e38\u306b\u5f37\u529b\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u3067\u3059\u3002\u4ee5\u964d\u306e\u30b5\u30d6\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5177\u4f53\u7684\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30d1\u30bf\u30fc\u30f3\u3068\u5b9f\u88c5\u65b9\u6cd5\u306b\u3064\u3044\u3066\u3055\u3089\u306b\u8a73\u3057\u304f\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u5f62\u5f0f\u30c1\u30a7\u30c3\u30af\u3092\u5b9f\u88c5\u3059\u308b\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306f\u3001Web\u30d5\u30a9\u30fc\u30e0\u306b\u304a\u3051\u308b\u6700\u3082\u4e00\u822c\u7684\u306a\u691c\u8a3c\u306e\u4e00\u3064\u3067\u3059\u3002\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u300c\u30ed\u30fc\u30ab\u30eb\u90e8@\u30c9\u30e1\u30a4\u30f3\u90e8\u300d\u3068\u3044\u3046\u57fa\u672c\u69cb\u9020\u3092\u6301\u3061\u307e\u3059\u304c\u3001\u305d\u306e\u8a73\u7d30\u306a\u4ed5\u69d8\u306f\u8907\u96d1\u3067\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u5b9f\u7528\u7684\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u691c\u8a3c\u306e\u5b9f\u88c5\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-16\">\u57fa\u672c\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1<\/h4>\n\n\n\n<p>\u30b7\u30f3\u30d7\u30eb\u3067\u5b9f\u7528\u7684\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u691c\u8a3c\u30d1\u30bf\u30fc\u30f3\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u5f62\u5f0f\u3092\u691c\u8a3c\u3059\u308b\n * \n * @param string $email \u691c\u8a3c\u3059\u308b\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\n * @return bool \u691c\u8a3c\u7d50\u679c\n *\/\nfunction validateEmail($email) {\n    $pattern = '\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/';\n    return preg_match($pattern, $email) === 1;\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$email = \"user@example.com\";\nif (validateEmail($email)) {\n    echo \"\u6709\u52b9\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u3059\";\n} else {\n    echo \"\u7121\u52b9\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u3059\";\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30d1\u30bf\u30fc\u30f3\u306e\u5404\u90e8\u5206\u306e\u610f\u5473\u306f\u6b21\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>^[a-zA-Z0-9._%+-]+<\/code> : \u30ed\u30fc\u30ab\u30eb\u90e8\uff08@\u306e\u524d\uff09\u3067\u4f7f\u7528\u53ef\u80fd\u306a\u6587\u5b57\u30bb\u30c3\u30c8<\/li>\n\n\n\n<li><code>@<\/code> : \u533a\u5207\u308a\u6587\u5b57<\/li>\n\n\n\n<li><code>[a-zA-Z0-9.-]+<\/code> : \u30c9\u30e1\u30a4\u30f3\u540d\u90e8\u5206<\/li>\n\n\n\n<li><code>\\.[a-zA-Z]{2,}$<\/code> : \u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30c9\u30e1\u30a4\u30f3\uff08.com\u3084.jp\u306a\u3069\uff09<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-17\">\u3088\u308a\u53b3\u5bc6\u306a\u691c\u8a3c<\/h4>\n\n\n\n<p>\u3088\u308a\u53b3\u5bc6\u306a\u691c\u8a3c\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function validateEmailStrict($email) {\n    $pattern = '\/^[a-zA-Z0-9.!#$%&amp;\\'*+\\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$\/';\n    return preg_match($pattern, $email) === 1;\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-18\">PHP\u306e\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u3092\u6d3b\u7528\u3059\u308b<\/h4>\n\n\n\n<p>PHP 7.2\u4ee5\u964d\u3067\u306f\u3001<code>filter_var<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3057\u305f\u65b9\u6cd5\u3082\u975e\u5e38\u306b\u4fbf\u5229\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function validateEmailWithFilter($email) {\n    return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u65b9\u6cd5\u306f\u3001\u5185\u90e8\u3067\u8907\u96d1\u306a\u691c\u8a3c\u30ed\u30b8\u30c3\u30af\u3092\u51e6\u7406\u3057\u3066\u304f\u308c\u308b\u305f\u3081\u3001\u63a8\u5968\u3055\u308c\u308b\u30a2\u30d7\u30ed\u30fc\u30c1\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-19\">\u6ce8\u610f\u70b9\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5b8c\u74a7\u306a\u691c\u8a3c\u306f\u96e3\u3057\u3044<\/strong>: \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u5b8c\u5168\u306aRFC\u6e96\u62e0\u306e\u691c\u8a3c\u306f\u975e\u5e38\u306b\u8907\u96d1\u3067\u3059\u3002\u5b9f\u7528\u7684\u306a\u59a5\u5354\u70b9\u3092\u63a2\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>\u4e8c\u6bb5\u968e\u691c\u8a3c\u306e\u5c0e\u5165<\/strong>: \u5f62\u5f0f\u30c1\u30a7\u30c3\u30af\u3060\u3051\u3067\u306a\u304f\u3001\u78ba\u8a8d\u30e1\u30fc\u30eb\u306e\u9001\u4fe1\u306a\u3069\u3001\u5b9f\u5728\u6027\u3092\u691c\u8a3c\u3059\u308b\u30b9\u30c6\u30c3\u30d7\u3082\u691c\u8a0e\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>\u56fd\u969b\u5316\u5bfe\u5fdc<\/strong>: \u975eASCII\u6587\u5b57\u3092\u542b\u3080\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\uff08\u56fd\u969b\u5316\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\uff09\u306b\u5bfe\u5fdc\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3088\u308a\u9ad8\u5ea6\u306a\u30d1\u30bf\u30fc\u30f3\u3084<code>idn_to_ascii<\/code>\u95a2\u6570\u3068\u306e\u7d44\u307f\u5408\u308f\u305b\u304c\u5fc5\u8981\u3067\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u56fd\u969b\u5316\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u5bfe\u5fdc\u306e\u4f8b\nfunction validateInternationalEmail($email) {\n    if (function_exists('idn_to_ascii')) {\n        \/\/ @\u4ee5\u964d\u306e\u30c9\u30e1\u30a4\u30f3\u90e8\u5206\u3092ASCII\u306b\u5909\u63db\n        $parts = explode('@', $email, 2);\n        if (count($parts) === 2) {\n            $domain = idn_to_ascii($parts[1], 0, INTL_IDNA_VARIANT_UTS46);\n            if ($domain !== false) {\n                $email = $parts[0] . '@' . $domain;\n            }\n        }\n    }\n    return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;\n}\n<\/pre>\n\n\n\n<p>\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u691c\u8a3c\u306f\u4e00\u898b\u5358\u7d14\u306b\u898b\u3048\u3066\u610f\u5916\u3068\u5965\u304c\u6df1\u3044\u3082\u306e\u3067\u3059\u3002\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8981\u4ef6\u306b\u5408\u308f\u305b\u3066\u3001\u9069\u5207\u306a\u30ec\u30d9\u30eb\u306e\u691c\u8a3c\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-20\">\u30d1\u30b9\u30ef\u30fc\u30c9\u5f37\u5ea6\u306e\u691c\u8a3c\u3092\u52b9\u7387\u7684\u306b\u884c\u3046<\/h3>\n\n\n\n<p>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u89b3\u70b9\u304b\u3089\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u8a2d\u5b9a\u3059\u308b\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5f37\u5ea6\u3092\u691c\u8a3c\u3059\u308b\u3053\u3068\u306f\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002<code>preg_match<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3059\u308c\u3070\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u5f37\u5ea6\u3092\u52b9\u7387\u7684\u304b\u3064\u67d4\u8edf\u306b\u691c\u8a3c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-21\">\u57fa\u672c\u7684\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u691c\u8a3c<\/h4>\n\n\n\n<p>\u307e\u305a\u306f\u3001\u5404\u8981\u7d20\u3092\u500b\u5225\u306b\u691c\u8a3c\u3059\u308b\u65b9\u6cd5\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * \u30d1\u30b9\u30ef\u30fc\u30c9\u5f37\u5ea6\u3092\u691c\u8a3c\u3059\u308b\n * \n * @param string $password \u691c\u8a3c\u3059\u308b\u30d1\u30b9\u30ef\u30fc\u30c9\n * @return array \u691c\u8a3c\u7d50\u679c\uff08\u5404\u8981\u7d20\u306e\u5408\u5426\u3068\u30b9\u30b3\u30a2\uff09\n *\/\nfunction validatePasswordStrength($password) {\n    $result = [\n        'valid' =&gt; true,\n        'score' =&gt; 0,\n        'errors' =&gt; []\n    ];\n    \n    \/\/ \u9577\u3055\u306e\u691c\u8a3c\uff088\u6587\u5b57\u4ee5\u4e0a\uff09\n    if (preg_match('\/^.{8,}$\/', $password) !== 1) {\n        $result['valid'] = false;\n        $result['errors'][] = \"\u30d1\u30b9\u30ef\u30fc\u30c9\u306f8\u6587\u5b57\u4ee5\u4e0a\u5fc5\u8981\u3067\u3059\";\n    } else {\n        $result['score']++;\n    }\n    \n    \/\/ \u5927\u6587\u5b57\u3092\u542b\u3080\u304b\n    if (preg_match('\/[A-Z]\/', $password) !== 1) {\n        $result['errors'][] = \"\u5927\u6587\u5b57\u3092\u542b\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\";\n    } else {\n        $result['score']++;\n    }\n    \n    \/\/ \u5c0f\u6587\u5b57\u3092\u542b\u3080\u304b\n    if (preg_match('\/[a-z]\/', $password) !== 1) {\n        $result['errors'][] = \"\u5c0f\u6587\u5b57\u3092\u542b\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\";\n    } else {\n        $result['score']++;\n    }\n    \n    \/\/ \u6570\u5b57\u3092\u542b\u3080\u304b\n    if (preg_match('\/[0-9]\/', $password) !== 1) {\n        $result['errors'][] = \"\u6570\u5b57\u3092\u542b\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\";\n    } else {\n        $result['score']++;\n    }\n    \n    \/\/ \u7279\u6b8a\u6587\u5b57\u3092\u542b\u3080\u304b\n    if (preg_match('\/[!@#$%^&amp;*(),.?\":{}|&lt;&gt;]\/', $password) !== 1) {\n        $result['errors'][] = \"\u7279\u6b8a\u6587\u5b57\u3092\u542b\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\";\n    } else {\n        $result['score']++;\n    }\n    \n    return $result;\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$password = \"Passw0rd!\";\n$result = validatePasswordStrength($password);\necho \"\u30d1\u30b9\u30ef\u30fc\u30c9\u5f37\u5ea6\u30b9\u30b3\u30a2: \" . $result['score'] . \"\/5\";\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-22\">1\u3064\u306e\u6b63\u898f\u8868\u73fe\u3067\u8907\u5408\u7684\u306b\u691c\u8a3c<\/h4>\n\n\n\n<p>\u3088\u308a\u52b9\u7387\u7684\u306b\u691c\u8a3c\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u5148\u8aad\u307f\uff08lookahead\uff09\u30a2\u30b5\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u4e00\u3064\u306e\u6b63\u898f\u8868\u73fe\u3067\u3059\u3079\u3066\u306e\u6761\u4ef6\u3092\u30c1\u30a7\u30c3\u30af\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function validatePasswordComplex($password) {\n    $pattern = '\/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&amp;*(),.?\":{}|&lt;&gt;])[A-Za-z\\d!@#$%^&amp;*(),.?\":{}|&lt;&gt;]{8,}$\/';\n    return preg_match($pattern, $password) === 1;\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u6b63\u898f\u8868\u73fe\u306e\u5404\u90e8\u5206\u306e\u610f\u5473\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>(?=.*[a-z])<\/code>: \u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u5c0f\u6587\u5b57\u3092\u542b\u3080<\/li>\n\n\n\n<li><code>(?=.*[A-Z])<\/code>: \u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u5927\u6587\u5b57\u3092\u542b\u3080<\/li>\n\n\n\n<li><code>(?=.*\\d)<\/code>: \u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u6570\u5b57\u3092\u542b\u3080<\/li>\n\n\n\n<li><code>(?=.*[!@#$%^&amp;*(),.?\":{}|&lt;&gt;])<\/code>: \u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u7279\u6b8a\u6587\u5b57\u3092\u542b\u3080<\/li>\n\n\n\n<li><code>[A-Za-z\\d!@#$%^&amp;*(),.?\":{}|&lt;&gt;]{8,}<\/code>: \u8a31\u53ef\u3055\u308c\u305f\u6587\u5b57\u306e\u307f\u3067\u69cb\u6210\u3055\u308c\u3001\u9577\u3055\u306f8\u6587\u5b57\u4ee5\u4e0a<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-23\">\u30d1\u30b9\u30ef\u30fc\u30c9\u5f37\u5ea6\u306e\u30b9\u30b3\u30a2\u5316<\/h4>\n\n\n\n<p>\u3088\u308a\u6d17\u7df4\u3055\u308c\u305f\u30a2\u30d7\u30ed\u30fc\u30c1\u3068\u3057\u3066\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u5f37\u5ea6\u3092\u30b9\u30b3\u30a2\u5316\u3057\u3001\u8996\u899a\u7684\u306a\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function getPasswordStrengthLevel($score) {\n    if ($score &lt; 3) return \"\u5f31\";\n    if ($score &lt; 5) return \"\u4e2d\";\n    return \"\u5f37\";\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$password = \"Secure1!\";\n$result = validatePasswordStrength($password);\necho \"\u30d1\u30b9\u30ef\u30fc\u30c9\u5f37\u5ea6: \" . getPasswordStrengthLevel($result['score']);\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-24\">\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d0\u30e9\u30f3\u30b9\u3092\u53d6\u308b<\/strong>: \u904e\u5ea6\u306b\u53b3\u3057\u3044\u30eb\u30fc\u30eb\u306f\u30e6\u30fc\u30b6\u30fc\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u3067\u306f\u3042\u308a\u307e\u305b\u3093<\/li>\n\n\n\n<li><strong>\u8996\u899a\u7684\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af<\/strong>: \u5f37\u5ea6\u30e1\u30fc\u30bf\u30fc\u306a\u3069\u3067\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306a\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u63d0\u4f9b<\/li>\n\n\n\n<li><strong>\u660e\u78ba\u306a\u30ac\u30a4\u30c0\u30f3\u30b9<\/strong>: \u4f55\u304c\u4e0d\u8db3\u3057\u3066\u3044\u308b\u304b\u3092\u5177\u4f53\u7684\u306b\u4f1d\u3048\u308b<\/li>\n\n\n\n<li><strong>\u4e8c\u91cd\u691c\u8a3c<\/strong>: \u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u3068\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u4e21\u65b9\u3067\u691c\u8a3c\u3092\u884c\u3046<\/li>\n<\/ol>\n\n\n\n<p>\u30d1\u30b9\u30ef\u30fc\u30c9\u5f37\u5ea6\u306e\u691c\u8a3c\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u4f53\u9a13\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u8003\u616e\u3057\u306a\u304c\u3089\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-25\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af2\uff1a\u30c6\u30ad\u30b9\u30c8\u5185\u306e\u7279\u5b9a\u60c5\u5831\u3092\u62bd\u51fa\u3059\u308b<\/h2>\n\n\n\n<p>\u60c5\u5831\u904e\u591a\u306e\u6642\u4ee3\u306b\u304a\u3044\u3066\u3001\u5927\u91cf\u306e\u30c6\u30ad\u30b9\u30c8\u30c7\u30fc\u30bf\u304b\u3089\u5fc5\u8981\u306a\u60c5\u5831\u3060\u3051\u3092\u62bd\u51fa\u3059\u308b\u80fd\u529b\u306f\u975e\u5e38\u306b\u4fa1\u5024\u304c\u3042\u308a\u307e\u3059\u3002<code>preg_match<\/code>\u95a2\u6570\u3068\u305d\u306e\u4ef2\u9593\u305f\u3061\u306f\u3001\u3053\u306e\u300c\u60c5\u5831\u306e\u91dd\u300d\u3092\u300c\u30c6\u30ad\u30b9\u30c8\u306e\u5e72\u3057\u8349\u306e\u5c71\u300d\u304b\u3089\u898b\u3064\u3051\u51fa\u3059\u305f\u3081\u306e\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u3092\u4f7f\u3063\u305f\u60c5\u5831\u62bd\u51fa\u306e\u5f37\u307f\u306f\u3001\u69cb\u9020\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u7279\u5b9a\u306e\u30d1\u30bf\u30fc\u30f3\u306b\u4e00\u81f4\u3059\u308b\u90e8\u5206\u3092\u6b63\u78ba\u306b\u53d6\u308a\u51fa\u305b\u308b\u3053\u3068\u306b\u3042\u308a\u307e\u3059\u3002\u30ed\u30b0\u89e3\u6790\u3001Web\u30b9\u30af\u30ec\u30a4\u30d4\u30f3\u30b0\u3001\u30c6\u30ad\u30b9\u30c8\u30de\u30a4\u30cb\u30f3\u30b0\u306a\u3069\u3001\u69d8\u3005\u306a\u5834\u9762\u3067\u6d3b\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-26\">\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u3092\u4f7f\u3063\u305f\u57fa\u672c\u7684\u306a\u62bd\u51fa<\/h3>\n\n\n\n<p>\u60c5\u5831\u62bd\u51fa\u306e\u6838\u3068\u306a\u308b\u306e\u304c\u3001\u62ec\u5f27<code>()<\/code>\u3067\u56f2\u3080\u3053\u3068\u3067\u4f5c\u6210\u3059\u308b\u300c\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u300d\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u65e5\u4ed8\u3092\u62bd\u51fa\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"\u6ce8\u6587\u65e5: 2023-05-15\u3001\u914d\u9001\u4e88\u5b9a\u65e5: 2023-05-20\";\n$pattern = \"\/\u6ce8\u6587\u65e5: (\\d{4}-\\d{2}-\\d{2})\u3001\u914d\u9001\u4e88\u5b9a\u65e5: (\\d{4}-\\d{2}-\\d{2})\/\";\n\nif (preg_match($pattern, $text, $matches)) {\n    echo \"\u6ce8\u6587\u65e5: \" . $matches[1] . \"\\n\";\n    echo \"\u914d\u9001\u4e88\u5b9a\u65e5: \" . $matches[2] . \"\\n\";\n}\n\/\/ \u51fa\u529b:\n\/\/ \u6ce8\u6587\u65e5: 2023-05-15\n\/\/ \u914d\u9001\u4e88\u5b9a\u65e5: 2023-05-20\n<\/pre>\n\n\n\n<p>\u3053\u306e\u4f8b\u3067\u306f\u30012\u3064\u306e\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7<code>(\\d{4}-\\d{2}-\\d{2})<\/code>\u3092\u4f7f\u7528\u3057\u3066\u65e5\u4ed8\u3092\u62bd\u51fa\u3057\u3066\u3044\u307e\u3059\u3002\u62bd\u51fa\u3055\u308c\u305f\u5024\u306f<code>$matches<\/code>\u914d\u5217\u306e\u6dfb\u5b571\u30682\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-27\">\u540d\u524d\u4ed8\u304d\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7<\/h3>\n\n\n\n<p>\u3088\u308a\u53ef\u8aad\u6027\u306e\u9ad8\u3044\u30b3\u30fc\u30c9\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u540d\u524d\u4ed8\u304d\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"\u6ce8\u6587\u65e5: 2023-05-15\u3001\u914d\u9001\u4e88\u5b9a\u65e5: 2023-05-20\";\n$pattern = \"\/\u6ce8\u6587\u65e5: (?&lt;order_date&gt;\\d{4}-\\d{2}-\\d{2})\u3001\u914d\u9001\u4e88\u5b9a\u65e5: (?&lt;delivery_date&gt;\\d{4}-\\d{2}-\\d{2})\/\";\n\nif (preg_match($pattern, $text, $matches)) {\n    echo \"\u6ce8\u6587\u65e5: \" . $matches['order_date'] . \"\\n\";\n    echo \"\u914d\u9001\u4e88\u5b9a\u65e5: \" . $matches['delivery_date'] . \"\\n\";\n}\n<\/pre>\n\n\n\n<p>\u540d\u524d\u4ed8\u304d\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u306f<code>(?&lt;name&gt;pattern)<\/code>\u3068\u3044\u3046\u69cb\u6587\u3067\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u6570\u5b57\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u306f\u306a\u304f\u540d\u524d\u3067\u7d50\u679c\u3092\u53c2\u7167\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-28\">\u8907\u6570\u306e\u4e00\u81f4\u3092\u62bd\u51fa\u3059\u308b<\/h3>\n\n\n\n<p>\u30c6\u30ad\u30b9\u30c8\u5185\u306e\u3059\u3079\u3066\u306e\u4e00\u81f4\u3092\u62bd\u51fa\u3057\u305f\u3044\u5834\u5408\u306f\u3001<code>preg_match_all<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"\u4fa1\u683c\u60c5\u5831: \u5546\u54c1A 1,200\u5186\u3001\u5546\u54c1B 3,500\u5186\u3001\u5546\u54c1C 980\u5186\";\n$pattern = \"\/\u5546\u54c1([A-Z]) ([0-9,]+)\u5186\/\";\n\npreg_match_all($pattern, $text, $matches, PREG_SET_ORDER);\n\nforeach ($matches as $match) {\n    echo \"\u5546\u54c1\u30b3\u30fc\u30c9: \" . $match[1] . \", \u4fa1\u683c: \" . $match[2] . \"\u5186\\n\";\n}\n\/\/ \u51fa\u529b:\n\/\/ \u5546\u54c1\u30b3\u30fc\u30c9: A, \u4fa1\u683c: 1,200\u5186\n\/\/ \u5546\u54c1\u30b3\u30fc\u30c9: B, \u4fa1\u683c: 3,500\u5186\n\/\/ \u5546\u54c1\u30b3\u30fc\u30c9: C, \u4fa1\u683c: 980\u5186\n<\/pre>\n\n\n\n<p><code>PREG_SET_ORDER<\/code>\u30d5\u30e9\u30b0\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u5404\u30de\u30c3\u30c1\u304c\u500b\u5225\u306e\u914d\u5217\u3068\u3057\u3066\u8fd4\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30de\u30c3\u30c1\u3054\u3068\u306b\u4e00\u8cab\u3057\u305f\u65b9\u6cd5\u3067\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-29\">\u5b9f\u8df5\u7684\u306a\u5fdc\u7528\u4f8b: \u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790<\/h3>\n\n\n\n<p>\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u7279\u5b9a\u306e\u60c5\u5831\u3092\u62bd\u51fa\u3059\u308b\u4f8b\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$log_line = '[2023-05-15 14:30:45] [ERROR] Database connection failed: Connection refused';\n$pattern = '\/\\[(?&lt;datetime&gt;\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2})\\] \\[(?&lt;level&gt;\\w+)\\] (?&lt;message&gt;.*)\/';\n\nif (preg_match($pattern, $log_line, $matches)) {\n    $log_entry = [\n        'datetime' =&gt; $matches['datetime'],\n        'level' =&gt; $matches['level'],\n        'message' =&gt; $matches['message']\n    ];\n    \n    echo \"\u6642\u523b: \" . $log_entry['datetime'] . \"\\n\";\n    echo \"\u30ec\u30d9\u30eb: \" . $log_entry['level'] . \"\\n\";\n    echo \"\u30e1\u30c3\u30bb\u30fc\u30b8: \" . $log_entry['message'] . \"\\n\";\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u4f7f\u3048\u3070\u3001\u8907\u96d1\u306a\u5f62\u5f0f\u306e\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u5fc5\u8981\u306a\u60c5\u5831\u3060\u3051\u3092\u62bd\u51fa\u3057\u3001\u69cb\u9020\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306b\u5909\u63db\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u306e\u60c5\u5831\u62bd\u51fa\u306f\u3001\u6b63\u898f\u8868\u73fe\u306e\u6700\u3082\u5f37\u529b\u306a\u5fdc\u7528\u4f8b\u306e\u4e00\u3064\u3067\u3059\u3002\u6b21\u306e\u30b5\u30d6\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001HTML\u8981\u7d20\u306e\u62bd\u51fa\u3084\u6570\u5024\u30c7\u30fc\u30bf\u306e\u62bd\u51fa\u306a\u3069\u3001\u3088\u308a\u5177\u4f53\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306b\u3064\u3044\u3066\u6398\u308a\u4e0b\u3052\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-30\">HTML\u304b\u3089\u7279\u5b9a\u306e\u8981\u7d20\u3084\u5c5e\u6027\u3092\u62bd\u51fa\u3059\u308b\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p>Web\u30b9\u30af\u30ec\u30a4\u30d4\u30f3\u30b0\u3084\u30b3\u30f3\u30c6\u30f3\u30c4\u89e3\u6790\u306b\u304a\u3044\u3066\u3001HTML\u304b\u3089\u7279\u5b9a\u306e\u8981\u7d20\u3084\u5c5e\u6027\u3092\u62bd\u51fa\u3059\u308b\u5fc5\u8981\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002<code>preg_match<\/code>\u3068<code>preg_match_all<\/code>\u3092\u4f7f\u3048\u3070\u3001\u30b7\u30f3\u30d7\u30eb\u306aHTML\u30d1\u30fc\u30b9\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>\u6ce8\u610f<\/strong>: \u6b63\u898f\u8868\u73fe\u306fHTML\u306e\u5b8c\u5168\u306a\u30d1\u30fc\u30b9\u306b\u306f\u5411\u3044\u3066\u3044\u307e\u305b\u3093\u3002\u8907\u96d1\u306aHTML\u51e6\u7406\u306b\u306f\u3001PHP DOMDocument\u3084SimpleXML\u306a\u3069\u306e\u5c02\u7528\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4f7f\u7528\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-31\">\u57fa\u672c\u7684\u306aHTML\u30bf\u30b0\u306e\u62bd\u51fa<\/h4>\n\n\n\n<p>\u30b7\u30f3\u30d7\u30eb\u306aHTML\u30bf\u30b0\u3092\u62bd\u51fa\u3059\u308b\u57fa\u672c\u7684\u306a\u30d1\u30bf\u30fc\u30f3\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$html = '&lt;div class=\"content\"&gt;Hello World&lt;\/div&gt;';\n$pattern = '\/&lt;div[^&gt;]*&gt;(.*?)&lt;\\\/div&gt;\/i';\n\nif (preg_match($pattern, $html, $matches)) {\n    echo \"\u62bd\u51fa\u3057\u305f\u30b3\u30f3\u30c6\u30f3\u30c4: \" . $matches[1]; \/\/ Hello World\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-32\">\u30ea\u30f3\u30af\uff08a\u30bf\u30b0\uff09\u3068URL\u306e\u62bd\u51fa<\/h4>\n\n\n\n<p>Web\u30da\u30fc\u30b8\u304b\u3089\u3059\u3079\u3066\u306e\u30ea\u30f3\u30af\u3092\u62bd\u51fa\u3059\u308b\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$html = '&lt;p&gt;Visit our &lt;a href=\"https:\/\/example.com\"&gt;website&lt;\/a&gt; or \n&lt;a href=\"https:\/\/blog.example.com\"&gt;blog&lt;\/a&gt;.&lt;\/p&gt;';\n$pattern = '\/&lt;a\\s+(?:[^&gt;]*?\\s+)?href=\"([^\"]*)\"[^&gt;]*&gt;(.*?)&lt;\\\/a&gt;\/i';\n\npreg_match_all($pattern, $html, $matches, PREG_SET_ORDER);\n\nforeach ($matches as $match) {\n    echo \"URL: \" . $match[1] . \", \u30c6\u30ad\u30b9\u30c8: \" . $match[2] . \"\\n\";\n}\n\/\/ \u51fa\u529b:\n\/\/ URL: https:\/\/example.com, \u30c6\u30ad\u30b9\u30c8: website\n\/\/ URL: https:\/\/blog.example.com, \u30c6\u30ad\u30b9\u30c8: blog\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-33\">\u540d\u524d\u4ed8\u304d\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u306e\u6d3b\u7528<\/h4>\n\n\n\n<p>\u540d\u524d\u4ed8\u304d\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u3092\u4f7f\u3046\u3068\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u304c\u5411\u4e0a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$html = '&lt;img src=\"image.jpg\" alt=\"\u30b5\u30f3\u30d7\u30eb\u753b\u50cf\" width=\"300\" height=\"200\"&gt;';\n$pattern = '\/&lt;img\\s+[^&gt;]*?src=\"(?&lt;src&gt;[^\"]*)\"[^&gt;]*?alt=\"(?&lt;alt&gt;[^\"]*)\"[^&gt;]*?&gt;\/i';\n\nif (preg_match($pattern, $html, $matches)) {\n    echo \"\u753b\u50cfURL: \" . $matches['src'] . \"\\n\";\n    echo \"\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8: \" . $matches['alt'] . \"\\n\";\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-34\">\u30e1\u30bf\u60c5\u5831\u306e\u62bd\u51fa<\/h4>\n\n\n\n<p>HTML\u306e\u30e1\u30bf\u30bf\u30b0\u304b\u3089\u60c5\u5831\u3092\u62bd\u51fa\u3059\u308b\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$html = '&lt;head&gt;\n&lt;meta name=\"description\" content=\"\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u8aac\u660e\"&gt;\n&lt;meta name=\"keywords\" content=\"PHP, \u6b63\u898f\u8868\u73fe, HTML\"&gt;\n&lt;\/head&gt;';\n$pattern = '\/&lt;meta\\s+name=\"([^\"]*)\"[^&gt;]*?content=\"([^\"]*)\"[^&gt;]*?&gt;\/i';\n\npreg_match_all($pattern, $html, $matches, PREG_SET_ORDER);\n\n$meta_info = [];\nforeach ($matches as $match) {\n    $meta_info[$match[1]] = $match[2];\n}\n\nprint_r($meta_info);\n\/\/ \u51fa\u529b:\n\/\/ Array ( [description] =&gt; \u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u8aac\u660e [keywords] =&gt; PHP, \u6b63\u898f\u8868\u73fe, HTML )\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-35\">\u30c6\u30fc\u30d6\u30eb\u30c7\u30fc\u30bf\u306e\u62bd\u51fa<\/h4>\n\n\n\n<p>HTML\u30c6\u30fc\u30d6\u30eb\u304b\u3089\u30c7\u30fc\u30bf\u3092\u62bd\u51fa\u3059\u308b\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$html = '&lt;table&gt;\n&lt;tr&gt;&lt;th&gt;\u5546\u54c1\u540d&lt;\/th&gt;&lt;th&gt;\u4fa1\u683c&lt;\/th&gt;&lt;\/tr&gt;\n&lt;tr&gt;&lt;td&gt;\u5546\u54c1A&lt;\/td&gt;&lt;td&gt;1,200\u5186&lt;\/td&gt;&lt;\/tr&gt;\n&lt;tr&gt;&lt;td&gt;\u5546\u54c1B&lt;\/td&gt;&lt;td&gt;3,500\u5186&lt;\/td&gt;&lt;\/tr&gt;\n&lt;\/table&gt;';\n$pattern = '\/&lt;tr&gt;&lt;td&gt;(.*?)&lt;\\\/td&gt;&lt;td&gt;(.*?)&lt;\\\/td&gt;&lt;\\\/tr&gt;\/i';\n\npreg_match_all($pattern, $html, $matches, PREG_SET_ORDER);\n\n$products = [];\nforeach ($matches as $match) {\n    $products[] = [\n        'name' =&gt; $match[1],\n        'price' =&gt; $match[2]\n    ];\n}\n\nprint_r($products);\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-36\">\u6b63\u898f\u8868\u73fe\u306b\u3088\u308bHTML\u30d1\u30fc\u30b9\u306e\u9650\u754c<\/h4>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u3067HTML\u3092\u51e6\u7406\u3059\u308b\u969b\u306e\u4e3b\u306a\u9650\u754c\u70b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5165\u308c\u5b50\u69cb\u9020\u3092\u6b63\u78ba\u306b\u628a\u63e1\u3067\u304d\u306a\u3044<\/li>\n\n\n\n<li>\u5927\u898f\u6a21\u306aHTML\u306e\u51e6\u7406\u306f\u975e\u52b9\u7387<\/li>\n\n\n\n<li>\u4e0d\u898f\u5247\u306aHTML\u3067\u306f\u8aa4\u3063\u305f\u7d50\u679c\u3092\u8fd4\u3059\u53ef\u80fd\u6027\u304c\u3042\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u8907\u96d1\u306aHTML\u30d1\u30fc\u30b9\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u4ee3\u66ff\u624b\u6bb5\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ DOMDocument\u3092\u4f7f\u3063\u305f\u4f8b\n$dom = new DOMDocument();\n$dom-&gt;loadHTML($html);\n$links = $dom-&gt;getElementsByTagName('a');\n\nforeach ($links as $link) {\n    echo $link-&gt;getAttribute('href') . \": \" . $link-&gt;nodeValue . \"\\n\";\n}\n<\/pre>\n\n\n\n<p>\u30b7\u30f3\u30d7\u30eb\u306a\u30b1\u30fc\u30b9\u3067\u306f\u6b63\u898f\u8868\u73fe\u304c\u4fbf\u5229\u3067\u3059\u304c\u3001\u8907\u96d1\u306aHTML\u306b\u306fDOM\u64cd\u4f5c\u304c\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-37\">\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u65e5\u4ed8\u3084\u6570\u5024\u3092\u52b9\u7387\u7684\u306b\u62bd\u51fa\u3059\u308b\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u30ec\u30dd\u30fc\u30c8\u3001\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u5165\u529b\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u306a\u3069\u304b\u3089\u65e5\u4ed8\u3084\u6570\u5024\u3092\u62bd\u51fa\u3059\u308b\u3053\u3068\u306f\u3001\u30c7\u30fc\u30bf\u51e6\u7406\u306e\u57fa\u672c\u7684\u306a\u30bf\u30b9\u30af\u3067\u3059\u3002<code>preg_match<\/code>\u3068<code>preg_match_all<\/code>\u3092\u4f7f\u3048\u3070\u3001\u69d8\u3005\u306a\u5f62\u5f0f\u306e\u65e5\u4ed8\u3084\u6570\u5024\u3092\u52b9\u7387\u7684\u306b\u62bd\u51fa\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-38\">\u65e5\u4ed8\u306e\u62bd\u51fa<\/h4>\n\n\n\n<p>\u3055\u307e\u3056\u307e\u306a\u5f62\u5f0f\u306e\u65e5\u4ed8\u3092\u62bd\u51fa\u3059\u308b\u30d1\u30bf\u30fc\u30f3\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"\u6ce8\u6587\u65e5: 2023-05-15\u3001\u51fa\u8377\u65e5: 20\/05\/2023\u3001\u5230\u7740\u4e88\u5b9a\u65e5: May 25, 2023\";\n\n\/\/ YYYY-MM-DD\u5f62\u5f0f\u306e\u62bd\u51fa\npreg_match('\/(\\d{4})-(\\d{2})-(\\d{2})\/', $text, $matches);\necho \"ISO\u5f62\u5f0f\u306e\u65e5\u4ed8: \" . $matches[0] . \"\\n\"; \/\/ 2023-05-15\n\n\/\/ DD\/MM\/YYYY\u5f62\u5f0f\u306e\u62bd\u51fa\npreg_match('\/(\\d{2})\\\/(\\d{2})\\\/(\\d{4})\/', $text, $matches);\necho \"\u30b9\u30e9\u30c3\u30b7\u30e5\u533a\u5207\u308a\u306e\u65e5\u4ed8: \" . $matches[0] . \"\\n\"; \/\/ 20\/05\/2023\n\n\/\/ \u6708\u540d\u3092\u542b\u3080\u5f62\u5f0f\u306e\u62bd\u51fa\npreg_match('\/(January|February|March|April|May|June|July|August|September|October|November|December)\\s+(\\d{1,2}),\\s+(\\d{4})\/i', $text, $matches);\necho \"\u81ea\u7136\u8a00\u8a9e\u306e\u65e5\u4ed8: \" . $matches[0] . \"\\n\"; \/\/ May 25, 2023\n<\/pre>\n\n\n\n<p>\u62bd\u51fa\u3057\u305f\u65e5\u4ed8\u3092PHP\u306e\u65e5\u4ed8\u578b\u306b\u5909\u63db\u3059\u308b\u65b9\u6cd5\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u6587\u5b57\u5217\u304b\u3089\u65e5\u4ed8\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\n$date_str = \"2023-05-15\";\n$date = DateTime::createFromFormat('Y-m-d', $date_str);\necho $date-&gt;format('Y\u5e74m\u6708d\u65e5') . \"\\n\"; \/\/ 2023\u5e7405\u670815\u65e5\n\n\/\/ \u5225\u306e\u5f62\u5f0f\u306e\u65e5\u4ed8\u3092\u5909\u63db\n$date_str = \"20\/05\/2023\";\n$date = DateTime::createFromFormat('d\/m\/Y', $date_str);\necho $date-&gt;format('Y\u5e74m\u6708d\u65e5') . \"\\n\"; \/\/ 2023\u5e7405\u670820\u65e5\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-39\">\u6570\u5024\u306e\u62bd\u51fa<\/h4>\n\n\n\n<p>\u69d8\u3005\u306a\u5f62\u5f0f\u306e\u6570\u5024\u3092\u62bd\u51fa\u3059\u308b\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"\u5546\u54c1A: 1,200\u5186\u3001\u5546\u54c1B: 3,500.75\u5186\u3001\u5546\u54c1C: -250\u5186\u3001\u5bf8\u6cd5: 25.5cm x 30cm\";\n\n\/\/ \u57fa\u672c\u7684\u306a\u6570\u5024\uff08\u6574\u6570\u30fb\u5c0f\u6570\uff09\u306e\u62bd\u51fa\npreg_match_all('\/[+-]?\\d+(\\.\\d+)?\/', $text, $matches);\nprint_r($matches[0]);\n\/\/ Array ( [0] =&gt; 1 [1] =&gt; 200 [2] =&gt; 3 [3] =&gt; 500.75 [4] =&gt; -250 [5] =&gt; 25.5 [6] =&gt; 30 )\n\n\/\/ \u30ab\u30f3\u30de\u533a\u5207\u308a\u306e\u6570\u5024\u3092\u62bd\u51fa\npreg_match_all('\/\\d{1,3}(,\\d{3})+(\\.\\d+)?\/', $text, $matches);\nprint_r($matches[0]);\n\/\/ Array ( [0] =&gt; 1,200 [1] =&gt; 3,500.75 )\n\n\/\/ \u901a\u8ca8\uff08\u5186\uff09\u3092\u542b\u3080\u6570\u5024\u3092\u62bd\u51fa\npreg_match_all('\/([+-]?[\\d,]+(\\.\\d+)?)\\s*\u5186\/', $text, $matches);\nprint_r($matches[1]);\n\/\/ Array ( [0] =&gt; 1,200 [1] =&gt; 3,500.75 [2] =&gt; -250 )\n<\/pre>\n\n\n\n<p>\u62bd\u51fa\u3057\u305f\u6570\u5024\u6587\u5b57\u5217\u3092\u5b9f\u969b\u306e\u6570\u5024\u306b\u5909\u63db\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30ab\u30f3\u30de\u3092\u542b\u3080\u6570\u5024\u306e\u5909\u63db\n$price_str = \"1,200\";\n$price = (float)str_replace(',', '', $price_str);\necho $price . \"\\n\"; \/\/ 1200\n\n\/\/ \u901a\u8ca8\u8a18\u53f7\u3068\u5358\u4f4d\u3092\u9664\u53bb\n$price_with_unit = \"3,500.75\u5186\";\n$price = (float)str_replace(['\u5186', ','], '', $price_with_unit);\necho $price . \"\\n\"; \/\/ 3500.75\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-40\">\u8907\u5408\u7684\u306a\u62bd\u51fa\u3068\u51e6\u7406<\/h4>\n\n\n\n<p>\u30d3\u30b8\u30cd\u30b9\u30b7\u30ca\u30ea\u30aa\u3067\u306e\u5fdc\u7528\u4f8b\uff1a\u8acb\u6c42\u66f8\u304b\u3089\u306e\u60c5\u5831\u62bd\u51fa<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$invoice_text = \"\u8acb\u6c42\u66f8\u756a\u53f7: INV-2023-0542\n\u767a\u884c\u65e5: 2023-05-15\n\u304a\u5ba2\u69d8: \u682a\u5f0f\u4f1a\u793e\u30b5\u30f3\u30d7\u30eb\n\u5546\u54c1\u5185\u8a33:\n- \u5546\u54c1A 2\u500b 1,200\u5186\/\u500b \u5c0f\u8a08: 2,400\u5186\n- \u5546\u54c1B 1\u500b 3,500\u5186\/\u500b \u5c0f\u8a08: 3,500\u5186\n\u5408\u8a08: 5,900\u5186\uff08\u7a0e\u8fbc\uff09\";\n\n\/\/ \u65e5\u4ed8\u306e\u62bd\u51fa\npreg_match('\/\u767a\u884c\u65e5: (\\d{4}-\\d{2}-\\d{2})\/', $invoice_text, $date_match);\n$issue_date = $date_match[1];\n\n\/\/ \u5546\u54c1\u60c5\u5831\u306e\u62bd\u51fa\npreg_match_all('\/- (.+) (\\d+)\u500b ([\\d,]+)\u5186\\\/\u500b \u5c0f\u8a08: ([\\d,]+)\u5186\/', $invoice_text, $items, PREG_SET_ORDER);\n\n$invoice_data = [\n    'issue_date' =&gt; $issue_date,\n    'items' =&gt; []\n];\n\nforeach ($items as $item) {\n    $invoice_data['items'][] = [\n        'name' =&gt; $item[1],\n        'quantity' =&gt; (int)$item[2],\n        'unit_price' =&gt; (float)str_replace(',', '', $item[3]),\n        'subtotal' =&gt; (float)str_replace(',', '', $item[4])\n    ];\n}\n\n\/\/ \u5408\u8a08\u91d1\u984d\u306e\u62bd\u51fa\npreg_match('\/\u5408\u8a08: ([\\d,]+)\u5186\/', $invoice_text, $total_match);\n$invoice_data['total'] = (float)str_replace(',', '', $total_match[1]);\n\nprint_r($invoice_data);\n<\/pre>\n\n\n\n<p>\u65e5\u4ed8\u3084\u6570\u5024\u306e\u62bd\u51fa\u306f\u3001\u30c7\u30fc\u30bf\u51e6\u7406\u3084\u30ec\u30dd\u30fc\u30c8\u751f\u6210\u306b\u304a\u3044\u3066\u975e\u5e38\u306b\u91cd\u8981\u306a\u30b9\u30ad\u30eb\u3067\u3059\u3002\u6b63\u898f\u8868\u73fe\u3092\u4f7f\u3044\u3053\u306a\u3059\u3053\u3068\u3067\u3001\u69cb\u9020\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u3082\u6709\u7528\u306a\u60c5\u5831\u3092\u52b9\u7387\u7684\u306b\u53d6\u308a\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-41\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af3\uff1aURL\u89e3\u6790\u3068\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u62bd\u51fa\u3092\u884c\u3046<\/h2>\n\n\n\n<p>Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u304a\u3044\u3066\u3001URL\u306e\u89e3\u6790\u3068\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u62bd\u51fa\u306f\u983b\u7e41\u306b\u884c\u308f\u308c\u308b\u51e6\u7406\u3067\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u304c\u9001\u4fe1\u3057\u305fURL\u3001\u30ed\u30b0\u306b\u8a18\u9332\u3055\u308c\u305fURL\u3001\u5916\u90e8API\u304b\u3089\u306e\u30b3\u30fc\u30eb\u30d0\u30c3\u30afURL\u306a\u3069\u3001\u69d8\u3005\u306a\u5834\u9762\u3067URL\u51e6\u7406\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p><code>preg_match<\/code>\u95a2\u6570\u3092\u4f7f\u3048\u3070\u3001URL\u306e\u691c\u8a3c\u3084\u5206\u89e3\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u62bd\u51fa\u3092\u52b9\u7387\u7684\u306b\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-42\">URL\u306e\u57fa\u672c\u69cb\u9020<\/h3>\n\n\n\n<p>\u307e\u305a\u306fURL\u306e\u57fa\u672c\u69cb\u9020\u3092\u7406\u89e3\u3057\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">scheme:\/\/host:port\/path?query#fragment\n<\/pre>\n\n\n\n<p>\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306eURL\u306f\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">https:\/\/example.com:8080\/products\/category?id=123&amp;sort=price#details\n<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b9\u30ad\u30fc\u30e0: <code>https<\/code><\/li>\n\n\n\n<li>\u30db\u30b9\u30c8: <code>example.com<\/code><\/li>\n\n\n\n<li>\u30dd\u30fc\u30c8: <code>8080<\/code><\/li>\n\n\n\n<li>\u30d1\u30b9: <code>\/products\/category<\/code><\/li>\n\n\n\n<li>\u30af\u30a8\u30ea: <code>id=123&amp;sort=price<\/code><\/li>\n\n\n\n<li>\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8: <code>details<\/code><\/li>\n<\/ul>\n\n\n\n<p>\u306b\u5206\u89e3\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-43\">PHP\u306e\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u3092\u6d3b\u7528\u3059\u308b<\/h3>\n\n\n\n<p>URL\u306e\u89e3\u6790\u306b\u306f\u3001PHP\u306e\u7d44\u307f\u8fbc\u307f\u95a2\u6570<code>parse_url()<\/code>\u304c\u975e\u5e38\u306b\u4fbf\u5229\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$url = \"https:\/\/example.com:8080\/products\/category?id=123&amp;sort=price#details\";\n$parts = parse_url($url);\nprint_r($parts);\n\/\/ \u51fa\u529b:\n\/\/ Array (\n\/\/   [scheme] =&gt; https\n\/\/   [host] =&gt; example.com\n\/\/   [port] =&gt; 8080\n\/\/   [path] =&gt; \/products\/category\n\/\/   [query] =&gt; id=123&amp;sort=price\n\/\/   [fragment] =&gt; details\n\/\/ )\n<\/pre>\n\n\n\n<p>\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u3055\u3089\u306b\u5206\u89e3\u3059\u308b\u306b\u306f<code>parse_str()<\/code>\u3092\u4f7f\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$query = $parts['query'];\nparse_str($query, $params);\nprint_r($params);\n\/\/ \u51fa\u529b:\n\/\/ Array (\n\/\/   [id] =&gt; 123\n\/\/   [sort] =&gt; price\n\/\/ )\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-44\">\u6b63\u898f\u8868\u73fe\u306b\u3088\u308bURL\u691c\u8a3c<\/h3>\n\n\n\n<p>URL\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u691c\u8a3c\u3059\u308b\u30b7\u30f3\u30d7\u30eb\u306a\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function isValidUrl($url) {\n    $pattern = '\/^(https?|ftp):\\\/\\\/[^\\s\\\/$.?#].[^\\s]*$\/i';\n    return preg_match($pattern, $url) === 1;\n}\n\n$url1 = \"https:\/\/example.com\";\n$url2 = \"not a url\";\n\necho isValidUrl($url1) ? \"\u6709\u52b9\u306aURL\\n\" : \"\u7121\u52b9\u306aURL\\n\"; \/\/ \u6709\u52b9\u306aURL\necho isValidUrl($url2) ? \"\u6709\u52b9\u306aURL\\n\" : \"\u7121\u52b9\u306aURL\\n\"; \/\/ \u7121\u52b9\u306aURL\n<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>\u6ce8\u610f<\/strong>: 100%\u5b8c\u5168\u306aURL\u691c\u8a3c\u3092\u6b63\u898f\u8868\u73fe\u3060\u3051\u3067\u884c\u3046\u306e\u306f\u96e3\u3057\u304f\u3001\u4e0a\u8a18\u306f\u7c21\u6613\u7684\u306a\u3082\u306e\u3067\u3059\u3002\u5b9f\u52d9\u3067\u306f\u3001<code>filter_var($url, FILTER_VALIDATE_URL)<\/code>\u3068\u306e\u7d44\u307f\u5408\u308f\u305b\u3082\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-45\">\u6b63\u898f\u8868\u73fe\u306b\u3088\u308bURL\u5206\u89e3<\/h3>\n\n\n\n<p><code>parse_url()<\/code>\u304c\u4f7f\u3048\u306a\u3044\u5834\u5408\u3084\u3001\u3088\u308a\u7d30\u304b\u3044\u5236\u5fa1\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u6b63\u898f\u8868\u73fe\u3067URL\u3092\u5206\u89e3\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function parseUrlWithRegex($url) {\n    $result = [];\n    \n    \/\/ \u30b9\u30ad\u30fc\u30e0\u3092\u62bd\u51fa\n    if (preg_match('\/^(https?|ftp):\\\/\\\/\/i', $url, $matches)) {\n        $result['scheme'] = $matches[1];\n    }\n    \n    \/\/ \u30db\u30b9\u30c8\uff08\u3068\u30dd\u30fc\u30c8\uff09\u3092\u62bd\u51fa\n    if (preg_match('\/^(?:https?|ftp):\\\/\\\/([^\\\/\\s]+)\/i', $url, $matches)) {\n        $host_port = $matches[1];\n        \n        \/\/ \u30dd\u30fc\u30c8\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\n        if (preg_match('\/^([^:]+):(\\d+)$\/', $host_port, $host_matches)) {\n            $result['host'] = $host_matches[1];\n            $result['port'] = $host_matches[2];\n        } else {\n            $result['host'] = $host_port;\n        }\n    }\n    \n    \/\/ \u30d1\u30b9\u3092\u62bd\u51fa\n    if (preg_match('\/^(?:https?|ftp):\\\/\\\/[^\\\/\\s]+([^\\s\\?#]*)\/i', $url, $matches)) {\n        $result['path'] = $matches[1] ?: '\/';\n    }\n    \n    \/\/ \u30af\u30a8\u30ea\u6587\u5b57\u5217\u3092\u62bd\u51fa\n    if (preg_match('\/\\?([^#]+)\/', $url, $matches)) {\n        $result['query'] = $matches[1];\n        \n        \/\/ \u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u5206\u89e3\n        $params = [];\n        preg_match_all('\/([^&amp;=]+)=([^&amp;]*)\/', $result['query'], $param_matches, PREG_SET_ORDER);\n        \n        foreach ($param_matches as $match) {\n            $params[$match[1]] = urldecode($match[2]);\n        }\n        \n        $result['params'] = $params;\n    }\n    \n    \/\/ \u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u3092\u62bd\u51fa\n    if (preg_match('\/#([^\\s]*)$\/', $url, $matches)) {\n        $result['fragment'] = $matches[1];\n    }\n    \n    return $result;\n}\n\n$url = \"https:\/\/example.com:8080\/products\/category?id=123&amp;sort=price#details\";\n$parts = parseUrlWithRegex($url);\nprint_r($parts);\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-46\">\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u500b\u5225\u62bd\u51fa<\/h3>\n\n\n\n<p>\u7279\u5b9a\u306e\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3060\u3051\u3092\u62bd\u51fa\u3057\u305f\u3044\u5834\u5408\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function getQueryParam($url, $param) {\n    $pattern = '\/[?&amp;]' . preg_quote($param, '\/') . '=([^&amp;#]*)\/';\n    \n    if (preg_match($pattern, $url, $matches)) {\n        return urldecode($matches[1]);\n    }\n    \n    return null;\n}\n\n$url = \"https:\/\/example.com\/search?q=PHP+programming&amp;limit=20\";\necho \"\u691c\u7d22\u30ad\u30fc\u30ef\u30fc\u30c9: \" . getQueryParam($url, 'q') . \"\\n\"; \/\/ PHP programming\necho \"\u8868\u793a\u4ef6\u6570: \" . getQueryParam($url, 'limit') . \"\\n\";    \/\/ 20\n<\/pre>\n\n\n\n<p>URL\u306e\u89e3\u6790\u3068\u64cd\u4f5c\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306e\u57fa\u672c\u7684\u306a\u30b9\u30ad\u30eb\u3067\u3059\u3002\u6b63\u898f\u8868\u73fe\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001URL\u306e\u5404\u90e8\u5206\u3092\u52b9\u7387\u7684\u306b\u62bd\u51fa\u3057\u3001\u51e6\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30b5\u30d6\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5177\u4f53\u7684\u306aURL\u691c\u8a3c\u3068\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u62bd\u51fa\u306e\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-47\">URL\u306e\u5f62\u5f0f\u3092\u691c\u8a3c\u3059\u308b\u30b7\u30f3\u30d7\u30eb\u3067\u5805\u7262\u306a\u30d1\u30bf\u30fc\u30f3<\/h3>\n\n\n\n<p>Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u5916\u90e8URL\u3092\u6271\u3046\u5834\u5408\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u3084\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u53d6\u5f97\u3057\u305fURL\u304c\u6709\u52b9\u306a\u5f62\u5f0f\u304b\u3069\u3046\u304b\u3092\u691c\u8a3c\u3059\u308b\u3053\u3068\u306f\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u54c1\u8cea\u4fdd\u8a3c\u306e\u89b3\u70b9\u304b\u3089\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u5b9f\u7528\u7684\u3067\u5805\u7262\u306aURL\u691c\u8a3c\u30d1\u30bf\u30fc\u30f3\u3092\u6bb5\u968e\u7684\u306b\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-48\">\u6bb5\u968e\u7684\u306aURL\u691c\u8a3c\u30a2\u30d7\u30ed\u30fc\u30c1<\/h4>\n\n\n\n<p>\u6700\u3082\u30b7\u30f3\u30d7\u30eb\u306a\u3082\u306e\u304b\u3089\u9806\u306b\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-49\">1. \u57fa\u672c\u7684\u306a\u691c\u8a3c\uff08\u6700\u5c0f\u9650\uff09<\/h5>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function isBasicUrl($url) {\n    return preg_match('\/^https?:\\\/\\\/.+$\/i', $url) === 1;\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30d1\u30bf\u30fc\u30f3\u306f\u3001HTTP\u307e\u305f\u306fHTTPS\u3067\u59cb\u307e\u308b\u3059\u3079\u3066\u306e\u6587\u5b57\u5217\u3092URL\u3068\u3057\u3066\u8a31\u53ef\u3057\u307e\u3059\u3002\u975e\u5e38\u306b\u30b7\u30f3\u30d7\u30eb\u3067\u3059\u304c\u3001\u660e\u3089\u304b\u306b\u7121\u52b9\u306aURL\u3082\u901a\u904e\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-50\">2. \u4e00\u822c\u7684\u306a\u5b9f\u7528\u30d1\u30bf\u30fc\u30f3<\/h5>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function isValidUrl($url) {\n    $pattern = '\/^(https?:\\\/\\\/)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&amp;\\\/\\\/=]*)$\/i';\n    return preg_match($pattern, $url) === 1;\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30d1\u30bf\u30fc\u30f3\u306f\u4ee5\u4e0b\u306e\u8981\u7d20\u3092\u691c\u8a3c\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30aa\u30d7\u30b7\u30e7\u30f3\u306eHTTP\/HTTPS\u30b9\u30ad\u30fc\u30e0<\/li>\n\n\n\n<li>\u30aa\u30d7\u30b7\u30e7\u30f3\u306ewww\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3<\/li>\n\n\n\n<li>\u6709\u52b9\u306a\u6587\u5b57\u3067\u69cb\u6210\u3055\u308c\u305f\u30c9\u30e1\u30a4\u30f3\u540d\uff082\uff5e256\u6587\u5b57\uff09<\/li>\n\n\n\n<li>\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30c9\u30e1\u30a4\u30f3\uff08.com, .org, .co.jp\u306a\u3069\uff09<\/li>\n\n\n\n<li>URL\u306e\u6b8b\u308a\u306e\u90e8\u5206\uff08\u30d1\u30b9\u3001\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u3001\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\uff09<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-51\">3. PHP\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u3068\u306e\u7d44\u307f\u5408\u308f\u305b<\/h5>\n\n\n\n<p>URL\u306e\u691c\u8a3c\u306b\u306f\u3001\u6b63\u898f\u8868\u73fe\u3068<code>filter_var()<\/code>\u95a2\u6570\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u306e\u304c\u6700\u3082\u5805\u7262\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function isRobustUrl($url) {\n    \/\/ \u307e\u305a\u57fa\u672c\u7684\u306a\u6b63\u898f\u8868\u73fe\u3067\u30c1\u30a7\u30c3\u30af\n    if (preg_match('\/^(https?:\\\/\\\/)[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,}([-a-zA-Z0-9@:%_\\+.~#?&amp;\\\/\\\/=]*)$\/i', $url) !== 1) {\n        return false;\n    }\n    \n    \/\/ \u6b21\u306bPHP\u7d44\u307f\u8fbc\u307f\u306eURL\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\n    return filter_var($url, FILTER_VALIDATE_URL, \n        FILTER_FLAG_SCHEME_REQUIRED | \n        FILTER_FLAG_HOST_REQUIRED) !== false;\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u7d44\u307f\u5408\u308f\u305b\u306b\u3088\u308a\u3001\u3088\u308a\u78ba\u5b9f\u306aURL\u691c\u8a3c\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-52\">\u5b9f\u969b\u306e\u4f7f\u7528\u4f8b<\/h4>\n\n\n\n<p>\u5b9f\u969b\u306e\u30d5\u30a9\u30fc\u30e0\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u4f7f\u7528\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d5\u30a9\u30fc\u30e0\u304b\u3089URL\u3092\u53d6\u5f97\n$website_url = $_POST['website_url'] ?? '';\n\n\/\/ URL\u306e\u691c\u8a3c\nif (empty($website_url)) {\n    $errors[] = \"Web\u30b5\u30a4\u30c8URL\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\";\n} elseif (!isRobustUrl($website_url)) {\n    $errors[] = \"\u6709\u52b9\u306aURL\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\";\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-53\">\u6ce8\u610f\u70b9\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u56fd\u969b\u5316\u30c9\u30e1\u30a4\u30f3\u540d\uff08IDN\uff09\u306e\u5bfe\u5fdc<\/strong> <code>\/\/ IDN\u3092ASCII\u306b\u5909\u63db\u3057\u3066\u304b\u3089\u691c\u8a3c if (function_exists('idn_to_ascii')) { $ascii_url = idn_to_ascii($url, 0, INTL_IDNA_VARIANT_UTS46); $url = $ascii_url !== false ? $ascii_url : $url; }<\/code><\/li>\n\n\n\n<li><strong>URL\u306e\u5230\u9054\u53ef\u80fd\u6027\u3068\u6709\u52b9\u6027\u306f\u5225\u554f\u984c<\/strong> \u5f62\u5f0f\u7684\u306b\u6709\u52b9\u306aURL\u3067\u3082\u3001\u5b9f\u969b\u306b\u305d\u306e\u30ea\u30bd\u30fc\u30b9\u304c\u5b58\u5728\u3059\u308b\u304b\u306f\u5225\u306e\u554f\u984c\u3067\u3059\u3002\u5fc5\u8981\u306b\u5fdc\u3058\u3066<code>get_headers()<\/code>\u3084<code>curl<\/code>\u3092\u4f7f\u7528\u3057\u305f\u8ffd\u52a0\u691c\u8a3c\u3082\u691c\u8a0e\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>\u65b0\u3057\u3044\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30c9\u30e1\u30a4\u30f3\u3078\u306e\u5bfe\u5fdc<\/strong> \u65b0\u3057\u3044\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30c9\u30e1\u30a4\u30f3\uff08.app, .dev, .technology \u306a\u3069\uff09\u306b\u5bfe\u5fdc\u3059\u308b\u305f\u3081\u3001TLD\u306e\u90e8\u5206\u306f\u67d4\u8edf\u306b\u8a2d\u5b9a\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u3092\u4f7f\u3063\u305fURL\u691c\u8a3c\u306f\u3001\u30b7\u30f3\u30d7\u30eb\u3055\u3068\u53b3\u5bc6\u3055\u306e\u30d0\u30e9\u30f3\u30b9\u304c\u91cd\u8981\u3067\u3059\u3002\u7528\u9014\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u30ec\u30d9\u30eb\u306e\u691c\u8a3c\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3067\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u4f7f\u3044\u3084\u3059\u3055\u306e\u4e21\u7acb\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-54\">\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6b63\u78ba\u306b\u62bd\u51fa\u3059\u308b\u65b9\u6cd5<\/h3>\n\n\n\n<p>URL\u306e\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u30c7\u30fc\u30bf\u3092\u6e21\u3059\u6700\u3082\u4e00\u822c\u7684\u306a\u65b9\u6cd5\u306e\u4e00\u3064\u3067\u3059\u3002\u691c\u7d22\u30ad\u30fc\u30ef\u30fc\u30c9\u3001\u30d5\u30a3\u30eb\u30bf\u30fc\u6761\u4ef6\u3001\u30da\u30fc\u30b8\u756a\u53f7\u306a\u3069\u3001\u69d8\u3005\u306a\u60c5\u5831\u304c\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u3057\u3066\u6e21\u3055\u308c\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001<code>preg_match<\/code>\u3092\u4f7f\u3063\u3066\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6b63\u78ba\u306b\u62bd\u51fa\u3059\u308b\u30c6\u30af\u30cb\u30c3\u30af\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-55\">\u30af\u30a8\u30ea\u6587\u5b57\u5217\u5168\u4f53\u306e\u62bd\u51fa<\/h4>\n\n\n\n<p>\u307e\u305a\u3001URL\u304b\u3089\u30af\u30a8\u30ea\u6587\u5b57\u5217\u5168\u4f53\u3092\u62bd\u51fa\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function getQueryString($url) {\n    if (preg_match('\/\\?([^#]+)\/', $url, $matches)) {\n        return $matches[1];\n    }\n    return '';\n}\n\n$url = \"https:\/\/example.com\/search?q=php+tutorial&amp;page=2&amp;sort=date#results\";\necho getQueryString($url); \/\/ \u51fa\u529b: q=php+tutorial&amp;page=2&amp;sort=date\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30d1\u30bf\u30fc\u30f3 <code>\\?([^#]+)<\/code> \u306f\u3001<code>?<\/code>\u8a18\u53f7\u304b\u3089\u59cb\u307e\u308a\u3001<code>#<\/code>\u8a18\u53f7\uff08\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\uff09\u306e\u524d\u307e\u3067\u306e\u3059\u3079\u3066\u306e\u6587\u5b57\u3092\u62bd\u51fa\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-56\">\u7279\u5b9a\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u62bd\u51fa\u3059\u308b<\/h4>\n\n\n\n<p>\u7279\u5b9a\u306e\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3060\u3051\u3092\u62bd\u51fa\u3057\u305f\u3044\u5834\u5408\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function getQueryParam($url, $param) {\n    $pattern = '\/[?&amp;]' . preg_quote($param, '\/') . '=([^&amp;#]*)\/';\n    \n    if (preg_match($pattern, $url, $matches)) {\n        return urldecode($matches[1]);\n    }\n    \n    return null;\n}\n\n$url = \"https:\/\/example.com\/search?q=php+tutorial&amp;page=2&amp;sort=date\";\necho \"\u691c\u7d22\u30ad\u30fc\u30ef\u30fc\u30c9: \" . getQueryParam($url, 'q') . \"\\n\";     \/\/ php tutorial\necho \"\u30da\u30fc\u30b8: \" . getQueryParam($url, 'page') . \"\\n\";          \/\/ 2\necho \"\u4e26\u3073\u9806: \" . getQueryParam($url, 'sort') . \"\\n\";          \/\/ date\necho \"\u5b58\u5728\u3057\u306a\u3044\u30d1\u30e9\u30e1\u30fc\u30bf: \" . getQueryParam($url, 'limit');  \/\/ null\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30d1\u30bf\u30fc\u30f3\u306e\u89e3\u8aac\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>[?&amp;]<\/code> \u2013 \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f<code>?<\/code>\u306e\u5f8c\u304b<code>&amp;<\/code>\u306e\u5f8c\u306b\u6765\u308b<\/li>\n\n\n\n<li><code>param=<\/code> \u2013 \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u540d\u3068\u7b49\u53f7<\/li>\n\n\n\n<li><code>([^&amp;#]*)<\/code> \u2013 \u5024\uff08<code>&amp;<\/code>\u304b<code>#<\/code>\u304c\u6765\u308b\u307e\u3067\u306e\u6587\u5b57\u5217\uff09\u3092\u30ad\u30e3\u30d7\u30c1\u30e3<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-57\">\u3059\u3079\u3066\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4e00\u5ea6\u306b\u62bd\u51fa\u3059\u308b<\/h4>\n\n\n\n<p>URL\u306e\u3059\u3079\u3066\u306e\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4e00\u5ea6\u306b\u62bd\u51fa\u3059\u308b\u65b9\u6cd5\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function getAllQueryParams($url) {\n    $query_string = '';\n    if (preg_match('\/\\?([^#]+)\/', $url, $matches)) {\n        $query_string = $matches[1];\n    } else {\n        return [];\n    }\n    \n    $params = [];\n    preg_match_all('\/([^&amp;=]+)=([^&amp;]*)\/', $query_string, $matches, PREG_SET_ORDER);\n    \n    foreach ($matches as $match) {\n        $params[urldecode($match[1])] = urldecode($match[2]);\n    }\n    \n    return $params;\n}\n\n$url = \"https:\/\/example.com\/search?q=php+tutorial&amp;page=2&amp;sort=date\";\n$params = getAllQueryParams($url);\nprint_r($params);\n\/\/ \u51fa\u529b:\n\/\/ Array (\n\/\/     [q] =&gt; php tutorial\n\/\/     [page] =&gt; 2\n\/\/     [sort] =&gt; date\n\/\/ )\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-58\">PHP\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u3068\u306e\u6bd4\u8f03<\/h4>\n\n\n\n<p>\u5b9f\u306f\u3001PHP\u306b\u306f\u65e2\u306b\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6271\u3046\u305f\u3081\u306e\u4fbf\u5229\u306a\u95a2\u6570\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function getParamsWithBuiltIn($url) {\n    \/\/ \u30af\u30a8\u30ea\u6587\u5b57\u5217\u3092\u53d6\u5f97\n    $query = parse_url($url, PHP_URL_QUERY);\n    \n    \/\/ \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u914d\u5217\u306b\u5909\u63db\n    $params = [];\n    if ($query) {\n        parse_str($query, $params);\n    }\n    \n    return $params;\n}\n\n$url = \"https:\/\/example.com\/search?q=php+tutorial&amp;page=2&amp;sort=date\";\n$params = getParamsWithBuiltIn($url);\nprint_r($params);\n<\/pre>\n\n\n\n<p>\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u3092\u4f7f\u3046\u65b9\u6cd5\u306f\u3001\u30b3\u30fc\u30c9\u304c\u7c21\u6f54\u306b\u306a\u308a\u3001\u30a8\u30c3\u30b8\u30b1\u30fc\u30b9\uff08\u914d\u5217\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306a\u3069\uff09\u3082\u9069\u5207\u306b\u51e6\u7406\u3067\u304d\u308b\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-59\">\u8907\u96d1\u306a\u30b1\u30fc\u30b9\u306e\u51e6\u7406<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u914d\u5217\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$url = \"https:\/\/example.com\/search?tags[]=php&amp;tags[]=mysql\";\n$params = getParamsWithBuiltIn($url);\nprint_r($params);\n\/\/ \u51fa\u529b: Array ( [tags] =&gt; Array ( [0] =&gt; php [1] =&gt; mysql ) )\n<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u7279\u6b8a\u6587\u5b57\u3092\u542b\u3080\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$url = \"https:\/\/example.com\/search?q=\" . urlencode(\"PHP &amp; MySQL\");\necho getQueryParam($url, 'q'); \/\/ \u51fa\u529b: PHP &amp; MySQL\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-60\">\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3068\u6ce8\u610f\u70b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3<\/strong>: \u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u3068\u3057\u3066\u6271\u3044\u3001\u9069\u5207\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3068\u30a8\u30b9\u30b1\u30fc\u30d7\u3092\u884c\u3044\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>URL\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0<\/strong>: \u30b9\u30da\u30fc\u30b9\u3084\u7279\u6b8a\u6587\u5b57\u3092\u542b\u3080\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u3001\u9069\u5207\u306b\u30a8\u30f3\u30b3\u30fc\u30c9\u30fb\u30c7\u30b3\u30fc\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u8907\u96d1\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u69cb\u9020<\/strong>: \u914d\u5217\u3084\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6271\u3046\u5834\u5408\u306f\u3001\u6b63\u898f\u8868\u73fe\u3088\u308a\u3082<code>parse_str()<\/code>\u304c\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30b1\u30fc\u30b9\u611f\u5ea6<\/strong>: \u591a\u304f\u306e\u30b7\u30b9\u30c6\u30e0\u3067\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u540d\u306f\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b\u305f\u3081\u3001\u6b63\u78ba\u306b\u6271\u3044\u307e\u3057\u3087\u3046\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u62bd\u51fa\u3068\u51e6\u7406\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u304a\u3051\u308b\u57fa\u672c\u7684\u306a\u30b9\u30ad\u30eb\u3067\u3059\u3002\u30b7\u30f3\u30d7\u30eb\u306a\u30b1\u30fc\u30b9\u3067\u306f\u6b63\u898f\u8868\u73fe\u304c\u4fbf\u5229\u3067\u3059\u304c\u3001\u8907\u96d1\u306a\u30b1\u30fc\u30b9\u3067\u306fPHP\u306e\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u3092\u6d3b\u7528\u3059\u308b\u306e\u304c\u52b9\u7387\u7684\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-61\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af4\uff1a\u6587\u5b57\u5217\u7f6e\u63db\u3068\u7d44\u307f\u5408\u308f\u305b\u305f\u9ad8\u5ea6\u306a\u51e6\u7406<\/h2>\n\n\n\n<p><code>preg_match<\/code>\u3067\u7279\u5b9a\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u691c\u51fa\u3059\u308b\u80fd\u529b\u306f\u3001\u7f6e\u63db\u6a5f\u80fd\u3068\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3055\u3089\u306b\u5f37\u529b\u306b\u306a\u308a\u307e\u3059\u3002PHP\u306e<code>preg_replace<\/code>\u95a2\u6570\u3068\u9023\u643a\u3055\u305b\u308b\u3053\u3068\u3067\u3001\u8907\u96d1\u306a\u30c6\u30ad\u30b9\u30c8\u5909\u63db\u3084\u9ad8\u5ea6\u306a\u30c7\u30fc\u30bf\u51e6\u7406\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-62\">\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u3068\u7f6e\u63db\u306e\u9023\u643a<\/h3>\n\n\n\n<p>\u6700\u3082\u30b7\u30f3\u30d7\u30eb\u306a\u9023\u643a\u306f\u3001\u307e\u305a<code>preg_match<\/code>\u3067\u30d1\u30bf\u30fc\u30f3\u304c\u5b58\u5728\u3059\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304b\u3089\u3001<code>preg_replace<\/code>\u3067\u7f6e\u63db\u3092\u884c\u3046\u30a2\u30d7\u30ed\u30fc\u30c1\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"\u3053\u3093\u306b\u3061\u306f\u3001\u79c1\u306e\u96fb\u8a71\u756a\u53f7\u306f 03-1234-5678 \u3067\u3059\u3002\";\n\n\/\/ \u96fb\u8a71\u756a\u53f7\u306e\u30d1\u30bf\u30fc\u30f3\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\nif (preg_match('\/\\d{2,4}-\\d{2,4}-\\d{4}\/', $text)) {\n    \/\/ \u542b\u307e\u308c\u3066\u3044\u308c\u3070\u3001\u30de\u30b9\u30af\u3057\u3066\u7f6e\u63db\n    $masked = preg_replace('\/(\\d{2,4})-(\\d{2,4})-(\\d{4})\/', '$1-$2-XXXX', $text);\n    echo $masked; \/\/ \u51fa\u529b: \u3053\u3093\u306b\u3061\u306f\u3001\u79c1\u306e\u96fb\u8a71\u756a\u53f7\u306f 03-1234-XXXX \u3067\u3059\u3002\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u4f8b\u3067\u306f\u3001\u307e\u305a\u96fb\u8a71\u756a\u53f7\u306e\u30d1\u30bf\u30fc\u30f3\u304c\u6587\u7ae0\u306b\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u3092\u78ba\u8a8d\u3057\u3001\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u306e\u307f\u7f6e\u63db\u51e6\u7406\u3092\u5b9f\u884c\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u4e0d\u8981\u306a\u51e6\u7406\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-63\">\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u69cb\u7bc9<\/h3>\n\n\n\n<p>\u3088\u308a\u8907\u96d1\u306a\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\u3067\u306f\u3001\u4e00\u9023\u306e\u5909\u63db\u30b9\u30c6\u30c3\u30d7\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u69cb\u7bc9\u3059\u308b\u3053\u3068\u304c\u6709\u52b9\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function processText($text) {\n    \/\/ \u30b9\u30c6\u30c3\u30d71: URL\u3092\u691c\u51fa\u3057\u3066\u30ea\u30f3\u30af\u306b\u5909\u63db\n    $pattern = '\/(https?:\\\/\\\/[^\\s]+)\/';\n    if (preg_match_all($pattern, $text, $matches)) {\n        $text = preg_replace($pattern, '&lt;a href=\"$1\"&gt;$1&lt;\/a&gt;', $text);\n    }\n    \n    \/\/ \u30b9\u30c6\u30c3\u30d72: \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u691c\u51fa\u3057\u3066\u96e3\u8aad\u5316\n    $pattern = '\/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})\/';\n    if (preg_match_all($pattern, $text, $matches)) {\n        $text = preg_replace($pattern, '&lt;span class=\"email\" data-email=\"$1\"&gt;\uff08\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\uff09&lt;\/span&gt;', $text);\n    }\n    \n    \/\/ \u30b9\u30c6\u30c3\u30d73: \u96fb\u8a71\u756a\u53f7\u3092\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\n    $pattern = '\/(\\d{2,4})-?(\\d{2,4})-?(\\d{4})\/';\n    if (preg_match_all($pattern, $text, $matches)) {\n        $text = preg_replace($pattern, '$1-$2-$3', $text);\n    }\n    \n    return $text;\n}\n\n$original = \"\u304a\u554f\u3044\u5408\u308f\u305b\u306finfo@example.com\u307e\u305f\u306f0312345678\u3001\u8a73\u7d30\u306fhttps:\/\/example.com\/contact\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\";\necho processText($original);\n\/\/ \u51fa\u529b: \u304a\u554f\u3044\u5408\u308f\u305b\u306f&lt;span class=\"email\" data-email=\"info@example.com\"&gt;\uff08\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\uff09&lt;\/span&gt;\u307e\u305f\u306f03-1234-5678\u3001\u8a73\u7d30\u306f&lt;a href=\"https:\/\/example.com\/contact\"&gt;https:\/\/example.com\/contact&lt;\/a&gt;\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306f\u3001\u8907\u6570\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u7570\u306a\u308b\u30d1\u30bf\u30fc\u30f3\u3092\u691c\u51fa\u3057\u3001\u305d\u308c\u305e\u308c\u306b\u9069\u3057\u305f\u5909\u63db\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002\u5404\u30b9\u30c6\u30c3\u30d7\u306f\u72ec\u7acb\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3057\u3084\u3059\u304f\u3001\u65b0\u3057\u3044\u5909\u63db\u30eb\u30fc\u30eb\u3092\u8ffd\u52a0\u3059\u308b\u306e\u3082\u7c21\u5358\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-64\">\u5f8c\u65b9\u53c2\u7167\u3092\u6d3b\u7528\u3057\u305f\u9ad8\u5ea6\u306a\u7f6e\u63db<\/h3>\n\n\n\n<p>\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u3068\u5f8c\u65b9\u53c2\u7167\uff08\u30d0\u30c3\u30af\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\uff09\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u30c6\u30ad\u30b9\u30c8\u306e\u518d\u69cb\u6210\u3084\u4e26\u3079\u66ff\u3048\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$names = \"Smith, John; Doe, Jane; Johnson, Robert\";\n\n\/\/ \u300c\u59d3, \u540d\u300d\u5f62\u5f0f\u3092\u300c\u540d \u59d3\u300d\u5f62\u5f0f\u306b\u5909\u63db\nif (preg_match_all('\/([^,]+),\\s*([^;]+)\/', $names, $matches, PREG_SET_ORDER)) {\n    $result = [];\n    \n    foreach ($matches as $match) {\n        $result[] = $match[2] . ' ' . $match[1];\n    }\n    \n    $formatted = implode('; ', $result);\n    echo $formatted; \/\/ \u51fa\u529b: John Smith; Jane Doe; Robert Johnson\n}\n\n\/\/ \u540c\u69d8\u306e\u51e6\u7406\u3092\u4e00\u884c\u3067\n$formatted = preg_replace('\/([^,]+),\\s*([^;]+)(;|$)\/', '$2 $1$3', $names);\necho $formatted; \/\/ \u51fa\u529b: John Smith; Jane Doe; Robert Johnson\n<\/pre>\n\n\n\n<p>\u3053\u306e\u4f8b\u3067\u306f\u3001\u59d3\u3068\u540d\u3092\u5165\u308c\u66ff\u3048\u308b\u51e6\u7406\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u3067\u30d1\u30bf\u30fc\u30f3\u306e\u5404\u90e8\u5206\u3092\u53d6\u5f97\u3057\u3001\u7f6e\u63db\u6642\u306b\u9806\u5e8f\u3092\u5909\u3048\u308b\u3053\u3068\u3067\u3001\u30c6\u30ad\u30b9\u30c8\u306e\u69cb\u9020\u3092\u5909\u66f4\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-65\">\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u306b\u3088\u308b\u52d5\u7684\u306a\u7f6e\u63db<\/h3>\n\n\n\n<p>\u3088\u308a\u8907\u96d1\u306a\u5909\u63db\u30ed\u30b8\u30c3\u30af\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001<code>preg_replace_callback<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"\u5546\u54c1A: 1200\u5186\u3001\u5546\u54c1B: 3500\u5186\u3001\u5546\u54c1C: 980\u5186\";\n\n\/\/ \u5186\u8868\u8a18\u309210%\u5024\u4e0a\u3052\u3057\u3066\u7a0e\u8fbc\u307f\u8868\u793a\u306b\u5909\u63db\n$result = preg_replace_callback(\n    '\/(\\d+)\u5186\/',\n    function($matches) {\n        $price = (int)$matches[1];\n        $new_price = floor($price * 1.1); \/\/ 10%\u5024\u4e0a\u3052\n        return $price . '\u5186\uff08\u7a0e\u8fbc' . $new_price . '\u5186\uff09';\n    },\n    $text\n);\n\necho $result;\n\/\/ \u51fa\u529b: \u5546\u54c1A: 1200\u5186\uff08\u7a0e\u8fbc1320\u5186\uff09\u3001\u5546\u54c1B: 3500\u5186\uff08\u7a0e\u8fbc3850\u5186\uff09\u3001\u5546\u54c1C: 980\u5186\uff08\u7a0e\u8fbc1078\u5186\uff09\n<\/pre>\n\n\n\n<p>\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u30de\u30c3\u30c1\u3057\u305f\u90e8\u5206\u3054\u3068\u306b\u7570\u306a\u308b\u51e6\u7406\u3084\u8a08\u7b97\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u4fa1\u683c\u8a08\u7b97\u3001\u65e5\u4ed8\u5909\u63db\u3001\u8907\u96d1\u306a\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u5909\u66f4\u306a\u3069\u306b\u975e\u5e38\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u3068\u7f6e\u63db\u306e\u7d44\u307f\u5408\u308f\u305b\u306f\u3001\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\u306e\u53ef\u80fd\u6027\u3092\u5927\u304d\u304f\u5e83\u3052\u307e\u3059\u3002\u6b21\u306e\u30b5\u30d6\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5177\u4f53\u7684\u306a\u5fdc\u7528\u4f8b\u3092\u3055\u3089\u306b\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-66\">\u30de\u30c3\u30c1\u30f3\u30b0\u3068\u7f6e\u63db\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\u306e\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3<\/h3>\n\n\n\n<p>\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306f\u3001\u8907\u6570\u306e\u5909\u63db\u30b9\u30c6\u30c3\u30d7\u3092\u9806\u5e8f\u7acb\u3066\u3066\u9069\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u8907\u96d1\u306a\u30c6\u30ad\u30b9\u30c8\u5909\u63db\u3092\u884c\u3046\u624b\u6cd5\u3067\u3059\u3002<code>preg_match<\/code>\u3068<code>preg_replace<\/code>\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u67d4\u8edf\u3067\u5f37\u529b\u306a\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-67\">\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u57fa\u672c\u69cb\u9020<\/h4>\n\n\n\n<p>\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u57fa\u672c\u7684\u306a\u69cb\u9020\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5165\u529b\u30c6\u30ad\u30b9\u30c8\u3092\u53d7\u3051\u53d6\u308b<\/li>\n\n\n\n<li>\u4e00\u9023\u306e\u5909\u63db\u30b9\u30c6\u30c3\u30d7\u3092\u9806\u306b\u9069\u7528\u3059\u308b<\/li>\n\n\n\n<li>\u5404\u30b9\u30c6\u30c3\u30d7\u3067\u30d1\u30bf\u30fc\u30f3\u3092\u691c\u51fa\u3057\u3001\u9069\u5207\u306a\u5909\u63db\u3092\u884c\u3046<\/li>\n\n\n\n<li>\u6700\u7d42\u7684\u306a\u51fa\u529b\u30c6\u30ad\u30b9\u30c8\u3092\u8fd4\u3059<\/li>\n<\/ol>\n\n\n\n<p>\u4ee5\u4e0b\u306f\u3001\u30b7\u30f3\u30d7\u30eb\u306a\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u5b9f\u88c5\u4f8b\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function textProcessingPipeline($text) {\n    \/\/ \u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u5404\u30b9\u30c6\u30c3\u30d7\u3092\u9806\u306b\u9069\u7528\n    $text = step1_formatPhoneNumbers($text);\n    $text = step2_linkifyUrls($text);\n    $text = step3_highlightKeywords($text);\n    \n    return $text;\n}\n\nfunction step1_formatPhoneNumbers($text) {\n    \/\/ \u96fb\u8a71\u756a\u53f7\u3092\u6a19\u6e96\u5f62\u5f0f\u306b\u5909\u63db\n    if (preg_match_all('\/(\\d{2,4})[-\\s]?(\\d{2,4})[-\\s]?(\\d{4})\/', $text, $matches, PREG_SET_ORDER)) {\n        foreach ($matches as $match) {\n            $original = $match[0];\n            $formatted = \"{$match[1]}-{$match[2]}-{$match[3]}\";\n            $text = str_replace($original, $formatted, $text);\n        }\n    }\n    return $text;\n}\n\nfunction step2_linkifyUrls($text) {\n    \/\/ URL\u3092\u30af\u30ea\u30c3\u30af\u53ef\u80fd\u306a\u30ea\u30f3\u30af\u306b\u5909\u63db\n    return preg_replace(\n        '\/(https?:\\\/\\\/[^\\s]+)\/',\n        '&lt;a href=\"$1\" target=\"_blank\"&gt;$1&lt;\/a&gt;',\n        $text\n    );\n}\n\nfunction step3_highlightKeywords($text) {\n    \/\/ \u91cd\u8981\u306a\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u30cf\u30a4\u30e9\u30a4\u30c8\n    $keywords = ['\u91cd\u8981', '\u6ce8\u610f', '\u8b66\u544a'];\n    \n    foreach ($keywords as $keyword) {\n        $pattern = '\/(' . preg_quote($keyword, '\/') . ')\/u';\n        $text = preg_replace($pattern, '&lt;strong class=\"highlight\"&gt;$1&lt;\/strong&gt;', $text);\n    }\n    \n    return $text;\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$input = \"\u304a\u554f\u3044\u5408\u308f\u305b\u306f 03 1234 5678 \u307e\u305f\u306f https:\/\/example.com \u307e\u3067\u3002\u91cd\u8981\u306a\u304a\u77e5\u3089\u305b\u304c\u3042\u308a\u307e\u3059\u3002\";\n$processed = textProcessingPipeline($input);\necho $processed;\n\/\/ \u51fa\u529b: \u304a\u554f\u3044\u5408\u308f\u305b\u306f 03-1234-5678 \u307e\u305f\u306f &lt;a href=\"https:\/\/example.com\" target=\"_blank\"&gt;https:\/\/example.com&lt;\/a&gt; \u307e\u3067\u3002&lt;strong class=\"highlight\"&gt;\u91cd\u8981&lt;\/strong&gt;\u306a\u304a\u77e5\u3089\u305b\u304c\u3042\u308a\u307e\u3059\u3002\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-68\">\u5b9f\u7528\u7684\u306a\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3: \u30b7\u30f3\u30d7\u30eb\u306aMarkdown\u30d1\u30fc\u30b5\u30fc<\/h4>\n\n\n\n<p>\u3088\u308a\u5b9f\u7528\u7684\u306a\u4f8b\u3068\u3057\u3066\u3001\u57fa\u672c\u7684\u306aMarkdown\u69cb\u6587\u3092HTML\u306b\u5909\u63db\u3059\u308b\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class MarkdownParser {\n    protected $pipeline = [];\n    \n    public function __construct() {\n        \/\/ \u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u30b9\u30c6\u30c3\u30d7\u3092\u767b\u9332\n        $this-&gt;pipeline = [\n            [$this, 'parseHeadings'],\n            [$this, 'parseBoldText'],\n            [$this, 'parseItalicText'],\n            [$this, 'parseLinks'],\n            [$this, 'parseCodeBlocks']\n        ];\n    }\n    \n    public function parse($markdown) {\n        $text = $markdown;\n        \n        \/\/ \u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u5b9f\u884c\n        foreach ($this-&gt;pipeline as $step) {\n            $text = call_user_func($step, $text);\n        }\n        \n        return $text;\n    }\n    \n    protected function parseHeadings($text) {\n        \/\/ \u898b\u51fa\u3057\u3092\u5909\u63db: # \u898b\u51fa\u3057 \u2192 &lt;h1&gt;\u898b\u51fa\u3057&lt;\/h1&gt;\n        $text = preg_replace('\/^#\\s+(.*?)$\/m', '&lt;h1&gt;$1&lt;\/h1&gt;', $text);\n        $text = preg_replace('\/^##\\s+(.*?)$\/m', '&lt;h2&gt;$1&lt;\/h2&gt;', $text);\n        $text = preg_replace('\/^###\\s+(.*?)$\/m', '&lt;h3&gt;$1&lt;\/h3&gt;', $text);\n        return $text;\n    }\n    \n    protected function parseBoldText($text) {\n        \/\/ \u592a\u5b57\u3092\u5909\u63db: **\u30c6\u30ad\u30b9\u30c8** \u2192 &lt;strong&gt;\u30c6\u30ad\u30b9\u30c8&lt;\/strong&gt;\n        return preg_replace('\/\\*\\*(.*?)\\*\\*\/', '&lt;strong&gt;$1&lt;\/strong&gt;', $text);\n    }\n    \n    protected function parseItalicText($text) {\n        \/\/ \u659c\u4f53\u3092\u5909\u63db: *\u30c6\u30ad\u30b9\u30c8* \u2192 &lt;em&gt;\u30c6\u30ad\u30b9\u30c8&lt;\/em&gt;\n        return preg_replace('\/(?&lt;!\\*)\\*(?!\\*)(.*?)(?&lt;!\\*)\\*(?!\\*)\/', '&lt;em&gt;$1&lt;\/em&gt;', $text);\n    }\n    \n    protected function parseLinks($text) {\n        \/\/ \u30ea\u30f3\u30af\u3092\u5909\u63db: [\u30c6\u30ad\u30b9\u30c8](URL) \u2192 &lt;a href=\"URL\"&gt;\u30c6\u30ad\u30b9\u30c8&lt;\/a&gt;\n        return preg_replace('\/\\[(.*?)\\]\\((.*?)\\)\/', '&lt;a href=\"$2\"&gt;$1&lt;\/a&gt;', $text);\n    }\n    \n    protected function parseCodeBlocks($text) {\n        \/\/ \u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u3092\u5909\u63db: `\u30b3\u30fc\u30c9` \u2192 &lt;code&gt;\u30b3\u30fc\u30c9&lt;\/code&gt;\n        return preg_replace('\/`(.*?)`\/', '&lt;code&gt;$1&lt;\/code&gt;', $text);\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$markdown = \"# \u30de\u30fc\u30af\u30c0\u30a6\u30f3\u30b5\u30f3\u30d7\u30eb\\n\\n**\u592a\u5b57** \u3068 *\u659c\u4f53* \u306e\u4f8b\u3002\\n\\n[\u30ea\u30f3\u30af](https:\/\/example.com)\\n\\n\u30b3\u30fc\u30c9: `echo \\\"Hello\\\";`\";\n$parser = new MarkdownParser();\n$html = $parser-&gt;parse($markdown);\necho $html;\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-69\">\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u62e1\u5f35\u3068\u6700\u9069\u5316<\/h4>\n\n\n\n<p>\u5b9f\u969b\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u3055\u3089\u306b\u62e1\u5f35\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u52d5\u7684\u306a\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u69cb\u7bc9<\/strong>: \u30d7\u30e9\u30b0\u30a4\u30f3\u30b7\u30b9\u30c6\u30e0\u3092\u5c0e\u5165\u3057\u3066\u3001\u5909\u63db\u30b9\u30c6\u30c3\u30d7\u3092\u52d5\u7684\u306b\u8ffd\u52a0<\/li>\n\n\n\n<li><strong>\u6761\u4ef6\u4ed8\u304d\u51e6\u7406<\/strong>: \u7279\u5b9a\u306e\u6761\u4ef6\u4e0b\u3067\u306e\u307f\u9069\u7528\u3055\u308c\u308b\u5909\u63db\u30b9\u30c6\u30c3\u30d7<\/li>\n\n\n\n<li><strong>\u30a8\u30e9\u30fc\u51e6\u7406<\/strong>: \u5404\u30b9\u30c6\u30c3\u30d7\u3067\u306e\u4f8b\u5916\u51e6\u7406\u3068\u56de\u5fa9\u30e1\u30ab\u30cb\u30ba\u30e0<\/li>\n\n\n\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/strong>: \u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3068\u518d\u5229\u7528<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d1\u30bf\u30fc\u30f3\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3068\u518d\u5229\u7528\nclass OptimizedParser {\n    private $patterns = [];\n    private $replacements = [];\n    \n    public function __construct() {\n        \/\/ \u30d1\u30bf\u30fc\u30f3\u3092\u4e00\u5ea6\u3060\u3051\u30b3\u30f3\u30d1\u30a4\u30eb\n        $this-&gt;patterns = [\n            'url' =&gt; '\/(https?:\\\/\\\/[^\\s]+)\/',\n            'email' =&gt; '\/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})\/'\n        ];\n        \n        $this-&gt;replacements = [\n            'url' =&gt; '&lt;a href=\"$1\"&gt;$1&lt;\/a&gt;',\n            'email' =&gt; '&lt;a href=\"mailto:$1\"&gt;$1&lt;\/a&gt;'\n        ];\n    }\n    \n    public function parse($text) {\n        \/\/ URL\u306e\u5909\u63db\n        if (preg_match($this-&gt;patterns['url'], $text)) {\n            $text = preg_replace($this-&gt;patterns['url'], $this-&gt;replacements['url'], $text);\n        }\n        \n        \/\/ \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u5909\u63db\n        if (preg_match($this-&gt;patterns['email'], $text)) {\n            $text = preg_replace($this-&gt;patterns['email'], $this-&gt;replacements['email'], $text);\n        }\n        \n        return $text;\n    }\n}\n<\/pre>\n\n\n\n<p>\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u8a2d\u8a08\u306f\u3001\u8907\u96d1\u306a\u30c6\u30ad\u30b9\u30c8\u5909\u63db\u3092\u7ba1\u7406\u3057\u3084\u3059\u3044\u5c0f\u3055\u306a\u30b9\u30c6\u30c3\u30d7\u306b\u5206\u89e3\u3059\u308b\u512a\u308c\u305f\u65b9\u6cd5\u3067\u3059\u3002<code>preg_match<\/code>\u3068<code>preg_replace<\/code>\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u3067\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-70\">\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u3092\u6d3b\u7528\u3057\u305f\u52d5\u7684\u306a\u6587\u5b57\u5217\u51e6\u7406<\/h3>\n\n\n\n<p><code>preg_replace<\/code>\u3060\u3051\u3067\u306f\u5bfe\u5fdc\u304c\u96e3\u3057\u3044\u8907\u96d1\u306a\u7f6e\u63db\u51e6\u7406\u306f\u3001<code>preg_replace_callback<\/code>\u95a2\u6570\u3092\u4f7f\u3046\u3053\u3068\u3067\u67d4\u8edf\u306b\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u95a2\u6570\u306f\u3001\u30de\u30c3\u30c1\u3057\u305f\u90e8\u5206\u3054\u3068\u306b\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u3092\u547c\u3073\u51fa\u3057\u3001\u305d\u306e\u623b\u308a\u5024\u3067\u7f6e\u63db\u3092\u884c\u3046\u3068\u3044\u3046\u5f37\u529b\u306a\u6a5f\u80fd\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-71\">preg_replace_callback\u306e\u57fa\u672c<\/h4>\n\n\n\n<p>\u57fa\u672c\u7684\u306a\u69cb\u6587\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">mixed preg_replace_callback(mixed $pattern, callable $callback, mixed $subject, int $limit = -1, int &amp;$count = null)\n<\/pre>\n\n\n\n<p>\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u306b\u306f\u3001\u30de\u30c3\u30c1\u3057\u305f\u7d50\u679c\u304c\u914d\u5217\u3068\u3057\u3066\u6e21\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u914d\u5217\u306e\u69cb\u9020\u306f<code>preg_match<\/code>\u306e<code>$matches<\/code>\u30d1\u30e9\u30e1\u30fc\u30bf\u3068\u540c\u3058\u3067\u3001<code>$matches[0]<\/code>\u306b\u5b8c\u5168\u306a\u30de\u30c3\u30c1\u3001<code>$matches[1]<\/code>\u4ee5\u964d\u306b\u5404\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u306e\u30de\u30c3\u30c1\u304c\u683c\u7d0d\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-72\">\u30b7\u30f3\u30d7\u30eb\u306a\u4f8b\uff1a\u6570\u5024\u306e\u8a08\u7b97<\/h4>\n\n\n\n<p>\u6700\u3082\u57fa\u672c\u7684\u306a\u4f8b\u3068\u3057\u3066\u3001\u30c6\u30ad\u30b9\u30c8\u5185\u306e\u6570\u5024\u3092\u3059\u3079\u30662\u500d\u306b\u3059\u308b\u51e6\u7406\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"\u4fa1\u683c: 100\u5186\u3001200\u5186\u3001300\u5186\";\n\n$result = preg_replace_callback(\n    '\/(\\d+)\u5186\/',\n    function($matches) {\n        $price = (int)$matches[1];\n        return ($price * 2) . \"\u5186\";\n    },\n    $text\n);\n\necho $result; \/\/ \u51fa\u529b: \u4fa1\u683c: 200\u5186\u3001400\u5186\u3001600\u5186\n<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001\u5358\u7d14\u306a\u7f6e\u63db\u3060\u3051\u3067\u306a\u304f\u3001\u30de\u30c3\u30c1\u3057\u305f\u5024\u306b\u5bfe\u3057\u3066\u8a08\u7b97\u3084\u5909\u63db\u306a\u3069\u306e\u51e6\u7406\u3092\u9069\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-73\">\u52d5\u7684\u30c7\u30fc\u30bf\u3078\u306e\u30a2\u30af\u30bb\u30b9<\/h4>\n\n\n\n<p>\u533f\u540d\u95a2\u6570\uff08\u30af\u30ed\u30fc\u30b8\u30e3\uff09\u306e\u7279\u6027\u3092\u6d3b\u304b\u3057\u3066\u3001\u5916\u90e8\u306e\u30c7\u30fc\u30bf\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$tax_rate = 0.1; \/\/ \u6d88\u8cbb\u7a0e\u7387\n$text = \"\u5546\u54c1A: 1000\u5186\u3001\u5546\u54c1B: 2000\u5186\u3001\u5546\u54c1C: 3000\u5186\";\n\n$result = preg_replace_callback(\n    '\/(\\d+)\u5186\/',\n    function($matches) use ($tax_rate) {\n        $price = (int)$matches[1];\n        $tax = floor($price * $tax_rate);\n        return \"{$price}\u5186\uff08\u7a0e{$tax}\u5186\uff09\";\n    },\n    $text\n);\n\necho $result; \/\/ \u51fa\u529b: \u5546\u54c1A: 1000\u5186\uff08\u7a0e100\u5186\uff09\u3001\u5546\u54c1B: 2000\u5186\uff08\u7a0e200\u5186\uff09\u3001\u5546\u54c1C: 3000\u5186\uff08\u7a0e300\u5186\uff09\n<\/pre>\n\n\n\n<p><code>use<\/code>\u53e5\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u30af\u30ed\u30fc\u30b8\u30e3\u306e\u5916\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u5909\u6570\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u7f6e\u63db\u51e6\u7406\u306b\u67d4\u8edf\u6027\u3092\u6301\u305f\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-74\">\u30ab\u30a6\u30f3\u30bf\u30fc\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<p>\u7f6e\u63db\u306e\u9806\u756a\u306b\u5fdc\u3058\u3066\u7570\u306a\u308b\u51e6\u7406\u3092\u884c\u3044\u305f\u3044\u5834\u5408\u306f\u3001\u30ab\u30a6\u30f3\u30bf\u30fc\u3092\u6d3b\u7528\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"\u9805\u76eeA\u3001\u9805\u76eeB\u3001\u9805\u76eeC\u3001\u9805\u76eeD\";\n$counter = 0;\n\n$result = preg_replace_callback(\n    '\/\u9805\u76ee([A-Z])\/',\n    function($matches) use (&amp;$counter) {\n        $counter++;\n        return \"{$counter}. \u9805\u76ee{$matches[1]}\";\n    },\n    $text\n);\n\necho $result; \/\/ \u51fa\u529b: 1. \u9805\u76eeA\u30012. \u9805\u76eeB\u30013. \u9805\u76eeC\u30014. \u9805\u76eeD\n<\/pre>\n\n\n\n<p>\u6ce8\u610f\u70b9\u3068\u3057\u3066\u3001\u30ab\u30a6\u30f3\u30bf\u30fc\u5909\u6570\u306f\u53c2\u7167\u6e21\u3057\uff08<code>&amp;$counter<\/code>\uff09\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5404\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u547c\u3073\u51fa\u3057\u3067\u5909\u6570\u306e\u5024\u3092\u66f4\u65b0\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-75\">\u6761\u4ef6\u4ed8\u304d\u7f6e\u63db<\/h4>\n\n\n\n<p>\u30de\u30c3\u30c1\u3057\u305f\u5185\u5bb9\u306b\u5fdc\u3058\u3066\u7570\u306a\u308b\u51e6\u7406\u3092\u9069\u7528\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"\u308a\u3093\u3054: 100\u5186\u3001\u30d0\u30ca\u30ca: 80\u5186\u3001\u307f\u304b\u3093: 50\u5186\u3001\u3044\u3061\u3054: 300\u5186\";\n\n$result = preg_replace_callback(\n    '\/([^:]+): (\\d+)\u5186\/',\n    function($matches) {\n        $fruit = $matches[1];\n        $price = (int)$matches[2];\n        \n        \/\/ 100\u5186\u4ee5\u4e0a\u306e\u5546\u54c1\u306b\u306f\u5272\u5f15\u3092\u9069\u7528\n        if ($price &gt;= 100) {\n            $discount = floor($price * 0.1);\n            $new_price = $price - $discount;\n            return \"{$fruit}: {$price}\u5186\uff0810%\u5272\u5f15\u3067{$new_price}\u5186\uff09\";\n        } else {\n            return $matches[0]; \/\/ \u5909\u66f4\u306a\u3057\n        }\n    },\n    $text\n);\n\necho $result;\n\/\/ \u51fa\u529b: \u308a\u3093\u3054: 100\u5186\uff0810%\u5272\u5f15\u306790\u5186\uff09\u3001\u30d0\u30ca\u30ca: 80\u5186\u3001\u307f\u304b\u3093: 50\u5186\u3001\u3044\u3061\u3054: 300\u5186\uff0810%\u5272\u5f15\u3067270\u5186\uff09\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-76\">\u8907\u96d1\u306a\u30c7\u30fc\u30bf\u5909\u63db\uff1a\u65e5\u4ed8\u30d5\u30a9\u30fc\u30de\u30c3\u30c8<\/h4>\n\n\n\n<p>\u65e5\u4ed8\u5f62\u5f0f\u306e\u5909\u63db\u306a\u3069\u3001\u3088\u308a\u8907\u96d1\u306a\u51e6\u7406\u306e\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"\u30a4\u30d9\u30f3\u30c8\u958b\u59cb: 2023-05-15\u3001\u30a4\u30d9\u30f3\u30c8\u7d42\u4e86: 2023-05-20\";\n\n$result = preg_replace_callback(\n    '\/(\\d{4})-(\\d{2})-(\\d{2})\/',\n    function($matches) {\n        $year = $matches[1];\n        $month = $matches[2];\n        $day = $matches[3];\n        \n        \/\/ \u548c\u66a6\u306b\u5909\u63db\uff08\u4f8b: 2023\u5e74 \u2192 \u4ee4\u548c5\u5e74\uff09\n        $era_year = $year - 2018;\n        return \"\u4ee4\u548c{$era_year}\u5e74{$month}\u6708{$day}\u65e5\";\n    },\n    $text\n);\n\necho $result; \/\/ \u51fa\u529b: \u30a4\u30d9\u30f3\u30c8\u958b\u59cb: \u4ee4\u548c5\u5e7405\u670815\u65e5\u3001\u30a4\u30d9\u30f3\u30c8\u7d42\u4e86: \u4ee4\u548c5\u5e7405\u670820\u65e5\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-77\">\u5fdc\u7528\u4f8b\uff1a\u30b7\u30f3\u30bf\u30c3\u30af\u30b9\u30cf\u30a4\u30e9\u30a4\u30c8<\/h4>\n\n\n\n<p>PHP\u95a2\u6570\u540d\u3092\u5f37\u8abf\u8868\u793a\u3059\u308b\u7c21\u6613\u7684\u306a\u30b7\u30f3\u30bf\u30c3\u30af\u30b9\u30cf\u30a4\u30e9\u30a4\u30c8\u306e\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$php_code = \"echo 'Hello'; preg_match('\/pattern\/', \\$subject); var_dump(\\$result);\";\n\n$php_functions = [\n    'echo' =&gt; 'output',\n    'preg_match' =&gt; 'regex',\n    'var_dump' =&gt; 'debug'\n];\n\n$highlighted = preg_replace_callback(\n    '\/\\b(' . implode('|', array_keys($php_functions)) . ')\\b\/',\n    function($matches) use ($php_functions) {\n        $function = $matches[1];\n        $class = $php_functions[$function];\n        return \"&lt;span class=\\\"function {$class}\\\"&gt;{$function}&lt;\/span&gt;\";\n    },\n    htmlspecialchars($php_code)\n);\n\necho $highlighted;\n\/\/ \u51fa\u529b: &lt;span class=\"function output\"&gt;echo&lt;\/span&gt; 'Hello'; &lt;span class=\"function regex\"&gt;preg_match&lt;\/span&gt;('\/pattern\/', $subject); &lt;span class=\"function debug\"&gt;var_dump&lt;\/span&gt;($result);\n<\/pre>\n\n\n\n<p><code>preg_replace_callback<\/code>\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u5358\u7d14\u306a\u7f6e\u63db\u3060\u3051\u3067\u306a\u304f\u3001\u30de\u30c3\u30c1\u3057\u305f\u5185\u5bb9\u306b\u5fdc\u3058\u305f\u8907\u96d1\u306a\u51e6\u7406\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u30c7\u30fc\u30bf\u306e\u5909\u63db\u3001\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3001\u8a08\u7b97\u306a\u3069\u3001\u69d8\u3005\u306a\u30b7\u30ca\u30ea\u30aa\u3067\u6d3b\u7528\u3067\u304d\u308b\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-78\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af5\uff1a\u5927\u91cf\u30c7\u30fc\u30bf\u51e6\u7406\u3067\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<p>\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790\u3084CSV\u30c7\u30fc\u30bf\u306e\u51e6\u7406\u306a\u3069\u3001\u5927\u91cf\u306e\u30c6\u30ad\u30b9\u30c8\u30c7\u30fc\u30bf\u3092\u6271\u3046\u5834\u9762\u3067\u306f\u3001\u6b63\u898f\u8868\u73fe\u306e\u52b9\u7387\u6027\u304c\u91cd\u8981\u306a\u8981\u7d20\u3068\u306a\u308a\u307e\u3059\u3002\u9069\u5207\u306b\u6700\u9069\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u6b63\u898f\u8868\u73fe\u306f\u3001\u51e6\u7406\u6642\u9593\u306e\u5897\u5927\u3084\u30e1\u30e2\u30ea\u6d88\u8cbb\u306e\u554f\u984c\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5927\u91cf\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u969b\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-79\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u8981\u7d20<\/h3>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u51e6\u7406\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u4e3b\u306a\u8981\u7d20\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d1\u30bf\u30fc\u30f3\u306e\u8907\u96d1\u3055<\/strong>: \u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u307b\u3069\u51e6\u7406\u306b\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059<\/li>\n\n\n\n<li><strong>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0<\/strong>: \u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u969b\u306e\u623b\u308a\u8ffd\u8de1\u51e6\u7406<\/li>\n\n\n\n<li><strong>\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba<\/strong>: \u51e6\u7406\u5bfe\u8c61\u306e\u30c6\u30ad\u30b9\u30c8\u306e\u91cf<\/li>\n\n\n\n<li><strong>\u7e70\u308a\u8fd4\u3057\u56de\u6570<\/strong>: \u540c\u3058\u30d1\u30bf\u30fc\u30f3\u3092\u4f55\u5ea6\u3082\u4f7f\u7528\u3059\u308b\u56de\u6570<\/li>\n<\/ol>\n\n\n\n<p>\u7279\u306b\u3001\u4e0d\u9069\u5207\u306a\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u306b\u3088\u308b\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306e\u5897\u52a0\u306f\u3001\u300c\u30ab\u30bf\u30b9\u30c8\u30ed\u30d5\u30a3\u30c3\u30af\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u300d\u3068\u547c\u3070\u308c\u308b\u72b6\u614b\u3092\u5f15\u304d\u8d77\u3053\u3057\u3001\u51e6\u7406\u6642\u9593\u304c\u6307\u6570\u95a2\u6570\u7684\u306b\u5897\u52a0\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-80\">\u52b9\u7387\u7684\u306a\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u306e\u8a2d\u8a08<\/h3>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u539f\u5247\u306b\u5f93\u3046\u3053\u3068\u3067\u3001\u3088\u308a\u52b9\u7387\u7684\u306a\u6b63\u898f\u8868\u73fe\u3092\u8a2d\u8a08\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8caa\u6b32\u306a\u91cf\u6307\u5b9a\u5b50\u3092\u907f\u3051\u308b<\/strong>: <code>.*<\/code>\u3084<code>.+<\/code>\u306a\u3069\u306e\u8caa\u6b32\u306a\u91cf\u6307\u5b9a\u5b50\u306f\u3001\u5fc5\u8981\u4ee5\u4e0a\u306b\u30de\u30c3\u30c1\u3057\u3088\u3046\u3068\u3057\u3066\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3092\u5897\u3084\u3057\u307e\u3059\u3002\u4ee3\u308f\u308a\u306b\u975e\u8caa\u6b32\u7248\uff08<code>.*?<\/code>, <code>.+?<\/code>\uff09\u3092\u691c\u8a0e\u3057\u307e\u3057\u3087\u3046\u3002<\/li>\n\n\n\n<li><strong>\u30a2\u30f3\u30ab\u30fc\u3092\u6d3b\u7528\u3059\u308b<\/strong>: <code>^<\/code>\uff08\u884c\u982d\uff09\u3084`\uff08\u884c\u672b\uff09\u306a\u3069\u306e\u30a2\u30f3\u30ab\u30fc\u3092\u4f7f\u3046\u3068\u3001\u30d1\u30bf\u30fc\u30f3\u304c\u9069\u7528\u3055\u308c\u308b\u7bc4\u56f2\u3092\u9650\u5b9a\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u904e\u5ea6\u306b\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u3092\u907f\u3051\u308b<\/strong>: \u4e00\u3064\u306e\u5de8\u5927\u306a\u6b63\u898f\u8868\u73fe\u3088\u308a\u3082\u3001\u8907\u6570\u306e\u30b7\u30f3\u30d7\u30eb\u306a\u6b63\u898f\u8868\u73fe\u306b\u5206\u5272\u3059\u308b\u65b9\u304c\u52b9\u7387\u7684\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u9069\u5207\u306a\u6587\u5b57\u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3059\u308b<\/strong>: <code>[0-9]<\/code>\u3088\u308a\u3082<code>\\d<\/code>\u3001<code>[a-zA-Z0-9_]<\/code>\u3088\u308a\u3082<code>\\w<\/code>\u306e\u3088\u3046\u306b\u3001\u30b7\u30e7\u30fc\u30c8\u30cf\u30f3\u30c9\u6587\u5b57\u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3068\u8aad\u307f\u3084\u3059\u304f\u3001\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u52b9\u7387\u7684\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u975e\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u3092\u6d3b\u7528\u3059\u308b<\/strong>: \u7d50\u679c\u306b\u542b\u3081\u308b\u5fc5\u8981\u306e\u306a\u3044\u30b0\u30eb\u30fc\u30d7\u306b\u306f\u3001\u975e\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7<code>(?:...)<\/code>\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u52b9\u7387\u306e\u60aa\u3044\u30d1\u30bf\u30fc\u30f3\n$inefficient = '\/.*&lt;title&gt;(.*)&lt;\\\/title&gt;.*\/s';\n\n\/\/ \u3088\u308a\u52b9\u7387\u7684\u306a\u30d1\u30bf\u30fc\u30f3\n$efficient = '\/&lt;title&gt;(.*?)&lt;\\\/title&gt;\/s';\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-81\">\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u518d\u5229\u7528\u3059\u308b<\/h3>\n\n\n\n<p>\u540c\u3058\u30d1\u30bf\u30fc\u30f3\u3092\u7e70\u308a\u8fd4\u3057\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u30d1\u30bf\u30fc\u30f3\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u3092\u4e00\u5ea6\u3060\u3051\u884c\u3044\u3001\u7d50\u679c\u3092\u518d\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u975e\u52b9\u7387\u306a\u4f8b: \u30eb\u30fc\u30d7\u5185\u3067\u6bce\u56de\u65b0\u3057\u3044\u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\n$lines = file('large_log.txt');\n$results = [];\n\nforeach ($lines as $line) {\n    if (preg_match('\/Error: (.*?) in (\\w+)\/', $line, $matches)) {\n        $results[] = $matches;\n    }\n}\n\n\/\/ \u52b9\u7387\u7684\u306a\u4f8b: \u30d1\u30bf\u30fc\u30f3\u3092\u5916\u90e8\u3067\u4e00\u5ea6\u3060\u3051\u5b9a\u7fa9\n$pattern = '\/Error: (.*?) in (\\w+)\/';\n$lines = file('large_log.txt');\n$results = [];\n\nforeach ($lines as $line) {\n    if (preg_match($pattern, $line, $matches)) {\n        $results[] = $matches;\n    }\n}\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-82\">\u5927\u91cf\u30c7\u30fc\u30bf\u3092\u5206\u5272\u3057\u3066\u51e6\u7406\u3059\u308b\u6226\u7565<\/h3>\n\n\n\n<p>\u5927\u304d\u306a\u30d5\u30a1\u30a4\u30eb\u3084\u30c6\u30ad\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b\u5834\u5408\u3001\u5168\u4f53\u3092\u4e00\u5ea6\u306b\u30e1\u30e2\u30ea\u306b\u8aad\u307f\u8fbc\u3080\u306e\u3067\u306f\u306a\u304f\u3001\u5206\u5272\u3057\u3066\u51e6\u7406\u3059\u308b\u3053\u3068\u3067\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u6291\u3048\u3089\u308c\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function processLargeFile($filename, $pattern) {\n    $results = [];\n    $handle = fopen($filename, 'r');\n    \n    if ($handle) {\n        while (($line = fgets($handle)) !== false) {\n            if (preg_match($pattern, $line, $matches)) {\n                $results[] = $matches;\n                \n                \/\/ \u5fc5\u8981\u306b\u5fdc\u3058\u3066\u7d50\u679c\u3092\u51e6\u7406\u3057\u3066\u89e3\u653e\n                if (count($results) &gt;= 1000) {\n                    processResults($results);\n                    $results = [];\n                }\n            }\n        }\n        \n        \/\/ \u6b8b\u308a\u306e\u7d50\u679c\u3092\u51e6\u7406\n        if (!empty($results)) {\n            processResults($results);\n        }\n        \n        fclose($handle);\n    }\n    \n    return true;\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u7279\u306b\u6570\u30ae\u30ac\u30d0\u30a4\u30c8\u4ee5\u4e0a\u306e\u5927\u304d\u306a\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u3059\u308b\u5834\u5408\u306b\u6709\u52b9\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-83\">\u6b63\u898f\u8868\u73fe\u306e\u4ee3\u66ff\u624b\u6bb5\u3092\u691c\u8a0e\u3059\u308b<\/h3>\n\n\n\n<p>\u5358\u7d14\u306a\u30b1\u30fc\u30b9\u3067\u306f\u3001<code>strpos()<\/code>, <code>strstr()<\/code>, <code>explode()<\/code>\u306a\u3069\u306e\u6587\u5b57\u5217\u95a2\u6570\u306e\u65b9\u304c\u9ad8\u901f\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u6b63\u898f\u8868\u73fe\u3092\u4f7f\u3063\u305f\u30a2\u30d7\u30ed\u30fc\u30c1\nif (preg_match('\/user_id=(\\d+)\/', $url, $matches)) {\n    $user_id = $matches[1];\n}\n\n\/\/ \u3088\u308a\u9ad8\u901f\u306a\u4ee3\u66ff\u624b\u6bb5\n$position = strpos($url, 'user_id=');\nif ($position !== false) {\n    $user_id = substr($url, $position + 8);\n    $end_position = strpos($user_id, '&amp;');\n    if ($end_position !== false) {\n        $user_id = substr($user_id, 0, $end_position);\n    }\n}\n<\/pre>\n\n\n\n<p>\u5927\u91cf\u30c7\u30fc\u30bf\u306e\u51e6\u7406\u3067\u306f\u3001\u6b63\u898f\u8868\u73fe\u306e\u52b9\u7387\u6027\u304c\u5168\u4f53\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5927\u304d\u304f\u5f71\u97ff\u3057\u307e\u3059\u3002\u30d1\u30bf\u30fc\u30f3\u306e\u8a2d\u8a08\u3001\u518d\u5229\u7528\u3001\u30c7\u30fc\u30bf\u5206\u5272\u306e\u6226\u7565\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u51e6\u7406\u52b9\u7387\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-84\">\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u518d\u5229\u7528\u3059\u308b\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u3092\u4f7f\u7528\u3059\u308b\u969b\u3001\u591a\u304f\u306e\u958b\u767a\u8005\u304c\u898b\u843d\u3068\u3057\u304c\u3061\u306a\u306e\u304c\u300c\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u300d\u3068\u3044\u3046\u30b9\u30c6\u30c3\u30d7\u3067\u3059\u3002PHP\u3067\u306f\u3001<code>preg_match<\/code>\u3084<code>preg_replace<\/code>\u306a\u3069\u306e\u95a2\u6570\u3092\u547c\u3073\u51fa\u3059\u305f\u3073\u306b\u3001\u6b63\u898f\u8868\u73fe\u30a8\u30f3\u30b8\u30f3\u304c\u30d1\u30bf\u30fc\u30f3\u3092\u89e3\u6790\u30fb\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u51e6\u7406\u306f\u3001\u7279\u306b\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u3067\u306f\u7121\u8996\u3067\u304d\u306a\u3044\u30b3\u30b9\u30c8\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-85\">\u30d1\u30bf\u30fc\u30f3\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u3068\u518d\u5229\u7528\u306e\u57fa\u672c<\/h4>\n\n\n\n<p>\u540c\u3058\u30d1\u30bf\u30fc\u30f3\u3092\u7e70\u308a\u8fd4\u3057\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u30d1\u30bf\u30fc\u30f3\u3092\u5909\u6570\u306b\u683c\u7d0d\u3057\u3066\u518d\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u306e\u7e70\u308a\u8fd4\u3057\u3092\u907f\u3051\u3089\u308c\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u975e\u52b9\u7387\uff1a\u30eb\u30fc\u30d7\u5185\u3067\u6bce\u56de\u30d1\u30bf\u30fc\u30f3\u3092\u5b9a\u7fa9\nforeach ($items as $item) {\n    if (preg_match('\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/', $item, $matches)) {\n        \/\/ \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u51e6\u7406\n    }\n}\n\n\/\/ \u52b9\u7387\u7684\uff1a\u30eb\u30fc\u30d7\u306e\u5916\u3067\u30d1\u30bf\u30fc\u30f3\u3092\u4e00\u5ea6\u3060\u3051\u5b9a\u7fa9\n$email_pattern = '\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/';\nforeach ($items as $item) {\n    if (preg_match($email_pattern, $item, $matches)) {\n        \/\/ \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u51e6\u7406\n    }\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u5358\u7d14\u306a\u5909\u66f4\u3060\u3051\u3067\u3001\u7279\u306b\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u5834\u5408\u3084\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306b\u3001\u9855\u8457\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5411\u4e0a\u304c\u898b\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-86\">\u8907\u6570\u30d1\u30bf\u30fc\u30f3\u306e\u7ba1\u7406<\/h4>\n\n\n\n<p>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5168\u4f53\u3067\u8907\u6570\u306e\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3092\u7ba1\u7406\u3059\u308b\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5b9a\u6570\u3068\u3057\u3066\u5b9a\u7fa9\u3059\u308b<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d5\u30a1\u30a4\u30eb\u306e\u5148\u982d\u3084\u5b9a\u6570\u30d5\u30a1\u30a4\u30eb\u3067\u5b9a\u7fa9\ndefine('REGEX_EMAIL', '\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/');\ndefine('REGEX_PHONE_JP', '\/^0\\d{1,4}-\\d{1,4}-\\d{4}$\/');\ndefine('REGEX_POSTAL_CODE_JP', '\/^\\d{3}-\\d{4}$\/');\n\n\/\/ \u4f7f\u7528\u6642\nif (preg_match(REGEX_EMAIL, $input, $matches)) {\n    \/\/ \u51e6\u7406\n}\n<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u914d\u5217\u3068\u3057\u3066\u7ba1\u7406\u3059\u308b<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$regex_patterns = [\n    'email' =&gt; '\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/',\n    'phone_jp' =&gt; '\/^0\\d{1,4}-\\d{1,4}-\\d{4}$\/',\n    'postal_code_jp' =&gt; '\/^\\d{3}-\\d{4}$\/'\n];\n\n\/\/ \u4f7f\u7528\u6642\nif (preg_match($regex_patterns['email'], $input, $matches)) {\n    \/\/ \u51e6\u7406\n}\n<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u5c02\u7528\u306e\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3059\u308b<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class RegexPatterns {\n    private static $patterns = [\n        'email' =&gt; '\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/',\n        'phone_jp' =&gt; '\/^0\\d{1,4}-\\d{1,4}-\\d{4}$\/',\n        'postal_code_jp' =&gt; '\/^\\d{3}-\\d{4}$\/'\n    ];\n    \n    public static function get($name) {\n        if (isset(self::$patterns[$name])) {\n            return self::$patterns[$name];\n        }\n        throw new \\InvalidArgumentException(\"\u30d1\u30bf\u30fc\u30f3 '{$name}' \u306f\u767b\u9332\u3055\u308c\u3066\u3044\u307e\u305b\u3093\");\n    }\n    \n    public static function match($name, $subject, &amp;$matches = null) {\n        return preg_match(self::get($name), $subject, $matches);\n    }\n}\n\n\/\/ \u4f7f\u7528\u6642\nif (RegexPatterns::match('email', $input, $matches)) {\n    \/\/ \u51e6\u7406\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-87\">\u30d1\u30bf\u30fc\u30f3\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u3055\u3089\u306a\u308b\u62e1\u5f35<\/h4>\n\n\n\n<p>\u52d5\u7684\u306b\u751f\u6210\u3059\u308b\u30d1\u30bf\u30fc\u30f3\u3067\u3082\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u6d3b\u7528\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class RegexCache {\n    private static $cache = [];\n    \n    public static function get($pattern_key, $pattern_template = null) {\n        if (!isset(self::$cache[$pattern_key])) {\n            if ($pattern_template === null) {\n                throw new \\InvalidArgumentException(\"\u30d1\u30bf\u30fc\u30f3 '{$pattern_key}' \u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u3066\u3044\u307e\u305b\u3093\");\n            }\n            self::$cache[$pattern_key] = $pattern_template;\n        }\n        return self::$cache[$pattern_key];\n    }\n    \n    public static function buildDynamicPattern($pattern_key, $placeholders) {\n        $pattern = self::$cache[$pattern_key] ?? null;\n        if ($pattern === null) {\n            throw new \\InvalidArgumentException(\"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 '{$pattern_key}' \u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u3066\u3044\u307e\u305b\u3093\");\n        }\n        \n        foreach ($placeholders as $key =&gt; $value) {\n            $pattern = str_replace(\"{{$key}}\", $value, $pattern);\n        }\n        \n        return $pattern;\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\nRegexCache::get('username', '\/^[a-z][a-z0-9_]{3,15}$\/i');\n\n\/\/ \u5225\u306e\u5834\u6240\u3067\u4f7f\u7528\nif (preg_match(RegexCache::get('username'), $input, $matches)) {\n    \/\/ \u51e6\u7406\n}\n<\/pre>\n\n\n\n<p>\u30d1\u30bf\u30fc\u30f3\u306e\u518d\u5229\u7528\u306f\u3001\u7279\u306b\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u51e6\u7406\u3084\u7e70\u308a\u8fd4\u3057\u5b9f\u884c\u3055\u308c\u308b\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5927\u304d\u306a\u5f71\u97ff\u3092\u4e0e\u3048\u307e\u3059\u3002\u9069\u5207\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u51e6\u7406\u6642\u9593\u3092\u6570\u500d\u304b\u3089\u6570\u5341\u500d\u6539\u5584\u3067\u304d\u308b\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-88\">\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u3092\u5206\u5272\u3057\u3066\u51e6\u7406\u3059\u308b\u6226\u7565<\/h3>\n\n\n\n<p>\u300c\u3059\u3079\u3066\u306e\u554f\u984c\u306f\u6b63\u898f\u8868\u73fe\u3067\u89e3\u6c7a\u3067\u304d\u308b\u3002\u305f\u3060\u3057\u305d\u308c\u3092\u4f7f\u3046\u3068\u4e8c\u3064\u306e\u554f\u984c\u3092\u62b1\u3048\u308b\u3053\u3068\u306b\u306a\u308b\u300d\u3068\u3044\u3046\u5197\u8ac7\u304c\u3042\u308b\u3088\u3046\u306b\u3001\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u306f\u53ef\u8aad\u6027\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u3001\u305d\u3057\u3066\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u9762\u3067\u8ab2\u984c\u3092\u751f\u307f\u51fa\u3057\u307e\u3059\u3002\u3053\u306e\u554f\u984c\u306b\u5bfe\u51e6\u3059\u308b\u306b\u306f\u3001\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u3092\u8907\u6570\u306e\u30b7\u30f3\u30d7\u30eb\u306a\u30b9\u30c6\u30c3\u30d7\u306b\u5206\u5272\u3059\u308b\u6226\u7565\u304c\u52b9\u679c\u7684\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-89\">\u5358\u4e00\u306e\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u306e\u554f\u984c\u70b9<\/h4>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306aHTML\u304b\u3089\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u62bd\u51fa\u3059\u308b\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u8907\u96d1\u3059\u304e\u308b\u5358\u4e00\u30d1\u30bf\u30fc\u30f3\uff08\u907f\u3051\u308b\u3079\u304d\uff09\n$complex_pattern = '\/&lt;a\\s+[^&gt;]*href=[\"\\'](mailto:)?([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})[\"\\'][^&gt;]*&gt;(.*?)&lt;\\\/a&gt;\/is';\n\n$html = file_get_contents('contacts.html');\npreg_match_all($complex_pattern, $html, $matches);\n$emails = $matches[2];\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30d1\u30bf\u30fc\u30f3\u306b\u306f\u8907\u6570\u306e\u554f\u984c\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u53ef\u8aad\u6027\u304c\u4f4e\u304f\u3001\u4fee\u6b63\u304c\u56f0\u96e3<\/li>\n\n\n\n<li>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u304c\u5927\u91cf\u306b\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b<\/li>\n\n\n\n<li>HTML\u3068\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u691c\u8a3c\u304c\u6df7\u5728\u3057\u3066\u3044\u308b<\/li>\n\n\n\n<li>\u4e00\u90e8\u304c\u5931\u6557\u3059\u308b\u3068\u5168\u4f53\u304c\u5931\u6557\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-90\">\u6bb5\u968e\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1<\/h4>\n\n\n\n<p>\u540c\u3058\u51e6\u7406\u3092\u8907\u6570\u306e\u30b7\u30f3\u30d7\u30eb\u306a\u30b9\u30c6\u30c3\u30d7\u306b\u5206\u5272\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function extractEmailsFromHTML($html) {\n    $emails = [];\n    \n    \/\/ \u30b9\u30c6\u30c3\u30d71: \u3059\u3079\u3066\u306ea\u30bf\u30b0\u3092\u62bd\u51fa\n    $a_tag_pattern = '\/&lt;a\\s+[^&gt;]*&gt;(.*?)&lt;\\\/a&gt;\/is';\n    preg_match_all($a_tag_pattern, $html, $a_tags_matches);\n    \n    foreach ($a_tags_matches[0] as $a_tag) {\n        \/\/ \u30b9\u30c6\u30c3\u30d72: href\u304b\u3089\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u691c\u51fa\n        if (preg_match('\/href=[\"\\'](?:mailto:)?([^\"\\'&gt;]+)\/i', $a_tag, $href_match)) {\n            $href = $href_match[1];\n            \n            \/\/ \u30b9\u30c6\u30c3\u30d73: \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\n            if (preg_match('\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/', $href)) {\n                $emails[] = $href;\n            }\n        }\n    }\n    \n    return $emails;\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u5206\u5272\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5404\u30b9\u30c6\u30c3\u30d7\u304c\u30b7\u30f3\u30d7\u30eb\u3067\u7406\u89e3\u3057\u3084\u3059\u3044<\/li>\n\n\n\n<li>\u5404\u90e8\u5206\u3092\u500b\u5225\u306b\u30c6\u30b9\u30c8\u3067\u304d\u308b<\/li>\n\n\n\n<li>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306e\u5f71\u97ff\u304c\u5c40\u6240\u5316\u3055\u308c\u308b<\/li>\n\n\n\n<li>\u4e00\u90e8\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u5931\u6557\u3057\u3066\u3082\u4ed6\u306e\u51e6\u7406\u306f\u7d9a\u884c\u3067\u304d\u308b<\/li>\n\n\n\n<li>\u5404\u30b9\u30c6\u30c3\u30d7\u306e\u7d50\u679c\u3092\u30c7\u30d0\u30c3\u30b0\u3057\u3084\u3059\u3044<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-91\">\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3068\u62bd\u51fa\u306e\u5206\u96e2<\/h4>\n\n\n\n<p>\u5206\u5272\u51e6\u7406\u306e\u57fa\u672c\u7684\u306a\u30d1\u30bf\u30fc\u30f3\u306f\u300c\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u300d\u3068\u300c\u62bd\u51fa\u300d\u3092\u5206\u3051\u308b\u3053\u3068\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function processLogFile($filename) {\n    $important_logs = [];\n    $handle = fopen($filename, 'r');\n    \n    if ($handle) {\n        \/\/ \u30b9\u30c6\u30c3\u30d71: \u91cd\u8981\u306a\u30ed\u30b0\u30a8\u30f3\u30c8\u30ea\u306e\u307f\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\n        $filter_pattern = '\/ERROR|WARNING|CRITICAL\/i';\n        \n        while (($line = fgets($handle)) !== false) {\n            if (preg_match($filter_pattern, $line)) {\n                $important_logs[] = $line;\n            }\n        }\n        \n        fclose($handle);\n        \n        \/\/ \u30b9\u30c6\u30c3\u30d72: \u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3055\u308c\u305f\u30ed\u30b0\u304b\u3089\u8a73\u7d30\u60c5\u5831\u3092\u62bd\u51fa\n        $results = [];\n        $extract_pattern = '\/(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}) (ERROR|WARNING|CRITICAL): (.*?) in (.*?):(\\d+)\/i';\n        \n        foreach ($important_logs as $log) {\n            if (preg_match($extract_pattern, $log, $matches)) {\n                $results[] = [\n                    'timestamp' =&gt; $matches[1],\n                    'level' =&gt; $matches[2],\n                    'message' =&gt; $matches[3],\n                    'file' =&gt; $matches[4],\n                    'line' =&gt; $matches[5]\n                ];\n            }\n        }\n        \n        return $results;\n    }\n    \n    return false;\n}\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u7279\u306b\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u5834\u5408\u306b\u52b9\u7387\u7684\u3067\u3059\u3002\u6700\u521d\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u30b9\u30c6\u30c3\u30d7\u3067\u51e6\u7406\u5bfe\u8c61\u3092\u5927\u5e45\u306b\u6e1b\u3089\u305b\u308b\u304b\u3089\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-92\">\u72b6\u614b\u7ba1\u7406\u306b\u3088\u308b\u8907\u96d1\u306a\u30c6\u30ad\u30b9\u30c8\u89e3\u6790<\/h4>\n\n\n\n<p>\u3088\u308a\u8907\u96d1\u306a\u30b1\u30fc\u30b9\u3067\u306f\u3001\u72b6\u614b\u6a5f\u68b0\u306e\u3088\u3046\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u3082\u52b9\u679c\u7684\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function parseStructuredText($text) {\n    $lines = explode(\"\\n\", $text);\n    $result = [];\n    $current_section = null;\n    $current_item = null;\n    \n    \/\/ \u30b9\u30c6\u30c3\u30d71: \u307e\u305a\u884c\u3092\u30bf\u30a4\u30d7\u3054\u3068\u306b\u5206\u985e\n    foreach ($lines as $line) {\n        \/\/ \u30bb\u30af\u30b7\u30e7\u30f3\u30d8\u30c3\u30c0\u30fc\n        if (preg_match('\/^## (.+)$\/', $line, $matches)) {\n            $current_section = $matches[1];\n            $result[$current_section] = [];\n            $current_item = null;\n        } \n        \/\/ \u30a2\u30a4\u30c6\u30e0\u30d8\u30c3\u30c0\u30fc\n        elseif (preg_match('\/^### (.+)$\/', $line, $matches) &amp;&amp; $current_section !== null) {\n            $current_item = $matches[1];\n            $result[$current_section][$current_item] = [];\n        }\n        \/\/ \u30b3\u30f3\u30c6\u30f3\u30c4\u884c\n        elseif ($current_section !== null &amp;&amp; $current_item !== null &amp;&amp; trim($line) !== '') {\n            \/\/ \u30ad\u30fc\u3068\u5024\u306e\u30da\u30a2\n            if (preg_match('\/^([^:]+):\\s*(.+)$\/', $line, $matches)) {\n                $key = trim($matches[1]);\n                $value = trim($matches[2]);\n                $result[$current_section][$current_item][$key] = $value;\n            } else {\n                \/\/ \u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\n                if (!isset($result[$current_section][$current_item]['text'])) {\n                    $result[$current_section][$current_item]['text'] = [];\n                }\n                $result[$current_section][$current_item]['text'][] = trim($line);\n            }\n        }\n    }\n    \n    return $result;\n}\n<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5206\u5272\u6226\u7565\u3092\u63a1\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u4fdd\u5b88\u6027\u304c\u9ad8\u304f\u3001\u52b9\u7387\u7684\u306a\u30b3\u30fc\u30c9\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u5927\u91cf\u306e\u30c6\u30ad\u30b9\u30c8\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u5834\u5408\u3084\u3001\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u304c\u8907\u96d1\u306b\u306a\u308a\u304c\u3061\u306a\u72b6\u6cc1\u3067\u306f\u3001\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u304c\u975e\u5e38\u306b\u6709\u52b9\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-93\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af6\uff1a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u8003\u616e\u3057\u305fpreg_match\u306e\u4f7f\u3044\u65b9<\/h2>\n\n\n\n<p><code>preg_match<\/code>\u95a2\u6570\u306f\u5165\u529b\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306b\u304a\u3044\u3066\u975e\u5e38\u306b\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3067\u3059\u304c\u3001\u9069\u5207\u306b\u4f7f\u7528\u3057\u306a\u3044\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af\u3092\u751f\u307f\u51fa\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u306e\u8a2d\u8a08\u30df\u30b9\u3084\u5b9f\u88c5\u4e0a\u306e\u554f\u984c\u304c\u3001\u653b\u6483\u8005\u306b\u60aa\u7528\u3055\u308c\u308b\u30ea\u30b9\u30af\u304c\u3042\u308b\u306e\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b89\u5168\u306a<code>preg_match<\/code>\u306e\u4f7f\u3044\u65b9\u3068\u3001\u4e00\u822c\u7684\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af\u306e\u56de\u907f\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-94\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u6b63\u898f\u8868\u73fe\u306e\u95a2\u4fc2<\/h3>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u3092\u4f7f\u3063\u305f\u5165\u529b\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306b\u304a\u3044\u3066\u4e0d\u53ef\u6b20\u306a\u8981\u7d20\u3067\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u304c\u671f\u5f85\u3055\u308c\u308b\u5f62\u5f0f\u306b\u78ba\u5b9f\u306b\u4e00\u81f4\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u691c\u8a3c\u3059\u308b\u3053\u3068\u3067\u3001\u69d8\u3005\u306a\u653b\u6483\uff08SQL\u30a4\u30f3\u30b8\u30a7\u30af\u30b7\u30e7\u30f3\u3001XSS\u3001\u30b3\u30de\u30f3\u30c9\u30a4\u30f3\u30b8\u30a7\u30af\u30b7\u30e7\u30f3\u306a\u3069\uff09\u306e\u30ea\u30b9\u30af\u3092\u8efd\u6e1b\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3057\u304b\u3057\u3001\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30d1\u30bf\u30fc\u30f3\u306e\u8a2d\u8a08\u304c\u4e0d\u9069\u5207\u3060\u3068\u3001\u6b21\u306e\u3088\u3046\u306a\u30ea\u30b9\u30af\u304c\u751f\u3058\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30d0\u30a4\u30d1\u30b9<\/strong>: \u4e0d\u5b8c\u5168\u306a\u30d1\u30bf\u30fc\u30f3\u306b\u3088\u308a\u3001\u60aa\u610f\u3042\u308b\u5165\u529b\u304c\u691c\u8a3c\u3092\u901a\u904e<\/li>\n\n\n\n<li><strong>\u904e\u5ea6\u306e\u5236\u9650<\/strong>: \u6b63\u5f53\u306a\u5165\u529b\u304c\u62d2\u5426\u3055\u308c\u30e6\u30fc\u30b6\u30fc\u4f53\u9a13\u3092\u640d\u306a\u3046<\/li>\n\n\n\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u554f\u984c<\/strong>: \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306e\u5897\u52a0\u306b\u3088\u308b\u30b5\u30fc\u30d3\u30b9\u62d2\u5426<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-95\">\u5b89\u5168\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30d1\u30bf\u30fc\u30f3\u306e\u8a2d\u8a08<\/h3>\n\n\n\n<p>\u30bb\u30ad\u30e5\u30a2\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u539f\u5247\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30db\u30ef\u30a4\u30c8\u30ea\u30b9\u30c8\u30a2\u30d7\u30ed\u30fc\u30c1<\/strong>: \u7981\u6b62\u3059\u308b\u3082\u306e\u3067\u306f\u306a\u304f\u3001\u8a31\u53ef\u3059\u308b\u3082\u306e\u3092\u660e\u793a\u7684\u306b\u5b9a\u7fa9<\/li>\n\n\n\n<li><strong>\u53b3\u683c\u306a\u30d1\u30bf\u30fc\u30f3<\/strong>: \u5fc5\u8981\u6700\u5c0f\u9650\u306e\u6587\u5b57\u30bb\u30c3\u30c8\u3068\u9577\u3055\u306b\u5236\u9650<\/li>\n\n\n\n<li><strong>\u5b8c\u5168\u4e00\u81f4\u306e\u78ba\u8a8d<\/strong>: \u90e8\u5206\u4e00\u81f4\u3067\u306f\u306a\u304f\u5b8c\u5168\u4e00\u81f4\uff08<code>^<\/code>\u3068<code>$<\/code>\u306e\u4f7f\u7528\uff09<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u4e0d\u9069\u5207\u306a\u30d1\u30bf\u30fc\u30f3\uff08\u5371\u967a\uff09\nif (preg_match('\/admin\/', $username)) { \/\/ \u90e8\u5206\u4e00\u81f4\n    \/\/ admin\u3092\u542b\u3080\u6587\u5b57\u5217\u306f\u3059\u3079\u3066\u7ba1\u7406\u8005\u6a29\u9650\u3092\u4ed8\u4e0e\n}\n\n\/\/ \u5b89\u5168\u306a\u30d1\u30bf\u30fc\u30f3\nif (preg_match('\/^[a-zA-Z0-9_]{3,16}$\/', $username)) {\n    \/\/ \u82f1\u6570\u5b57\u3068\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\u306e\u307f\u3067\u69cb\u6210\u3055\u308c\u30013\u301c16\u6587\u5b57\u306e\u9577\u3055\u306e\u5834\u5408\u306e\u307f\u8a31\u53ef\n}\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-96\">\u8907\u6570\u5c64\u9632\u5fa1\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<p>\u5358\u4e00\u306e\u9632\u5fa1\u5c64\u306b\u4f9d\u5b58\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u8907\u6570\u306e\u691c\u8a3c\u30ec\u30a4\u30e4\u30fc\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u63a8\u5968\u3055\u308c\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function validateEmail($email) {\n    \/\/ \u5c641: \u57fa\u672c\u7684\u306a\u5f62\u5f0f\u30c1\u30a7\u30c3\u30af\n    if (!preg_match('\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/', $email)) {\n        return false;\n    }\n    \n    \/\/ \u5c642: PHP\u306e\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u3092\u4f7f\u7528\n    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {\n        return false;\n    }\n    \n    \/\/ \u5c643: \u8ffd\u52a0\u306e\u30d3\u30b8\u30cd\u30b9\u30eb\u30fc\u30eb\uff08\u4f8b\uff1a\u7279\u5b9a\u30c9\u30e1\u30a4\u30f3\u306e\u307f\u8a31\u53ef\uff09\n    $domain = substr(strrchr($email, \"@\"), 1);\n    $allowed_domains = ['example.com', 'company.org'];\n    if (!in_array($domain, $allowed_domains)) {\n        return false;\n    }\n    \n    return true;\n}\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-97\">\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af<\/h3>\n\n\n\n<p>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u8003\u616e\u3057\u305f\u30a8\u30e9\u30fc\u51e6\u7406\u3082\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function validateInput($input, $pattern, $error_messages) {\n    try {\n        $result = preg_match($pattern, $input);\n        \n        if ($result === false) {\n            \/\/ \u5185\u90e8\u30a8\u30e9\u30fc\u306f\u8a73\u7d30\u3092\u30ed\u30b0\u306b\u8a18\u9332\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u306b\u306f\u4e00\u822c\u7684\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\n            error_log(\"\u6b63\u898f\u8868\u73fe\u30a8\u30e9\u30fc: \" . preg_last_error());\n            return ['valid' =&gt; false, 'message' =&gt; $error_messages['system']];\n        }\n        \n        if ($result === 0) {\n            \/\/ \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u5931\u6557\u306f\u4e00\u822c\u7684\u306a\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u63d0\u4f9b\n            return ['valid' =&gt; false, 'message' =&gt; $error_messages['format']];\n        }\n        \n        return ['valid' =&gt; true, 'message' =&gt; ''];\n    } catch (Exception $e) {\n        \/\/ \u4f8b\u5916\u51e6\u7406\n        error_log(\"\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u4f8b\u5916: \" . $e-&gt;getMessage());\n        return ['valid' =&gt; false, 'message' =&gt; $error_messages['system']];\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n$result = validateInput($email, '\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/', [\n    'format' =&gt; '\u6709\u52b9\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044',\n    'system' =&gt; '\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u5f8c\u3067\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044'\n]);\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-98\">\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a<\/h3>\n\n\n\n<p>\u7279\u306b\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u3082\u691c\u8a0e\u3059\u3079\u304d\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u51e6\u7406\u6642\u9593\u5236\u9650\u3092\u8a2d\u5b9a\uff08\u4f8b\uff1a1\u79d2\uff09\nset_time_limit(1);\n\ntry {\n    $result = preg_match($complex_pattern, $large_input);\n    \/\/ \u51e6\u7406\u7d99\u7d9a\n} catch (Exception $e) {\n    \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u307e\u305f\u306f\u305d\u306e\u4ed6\u306e\u4f8b\u5916\u3092\u51e6\u7406\n}\n\n\/\/ \u5236\u9650\u3092\u5143\u306b\u623b\u3059\nset_time_limit(30); \/\/ \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u307e\u305f\u306f\u9069\u5207\u306a\u5024\n<\/pre>\n\n\n\n<p>\u9069\u5207\u306b\u8a2d\u8a08\u3055\u308c\u305f\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3068\u5805\u7262\u306a\u30a8\u30e9\u30fc\u51e6\u7406\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u30bb\u30ad\u30e5\u30a2\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30b5\u30d6\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u7279\u306b\u91cd\u8981\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af\u3067\u3042\u308b\u300c\u6b63\u898f\u8868\u73feDoS\u653b\u6483\u300d\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-99\">\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u691c\u8a3c\u3067\u9665\u308a\u304c\u3061\u306a\u843d\u3068\u3057\u7a74\u3068\u5bfe\u7b56<\/h3>\n\n\n\n<p>\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u691c\u8a3c\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306b\u304a\u3044\u3066\u91cd\u8981\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\u307e\u3059\u304c\u3001\u6b63\u898f\u8868\u73fe\u3092\u4f7f\u7528\u3059\u308b\u969b\u306b\u306f\u69d8\u3005\u306a\u843d\u3068\u3057\u7a74\u304c\u5b58\u5728\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u3092\u7406\u89e3\u3057\u3001\u9069\u5207\u306b\u5bfe\u51e6\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u5805\u7262\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-100\">\u843d\u3068\u3057\u7a741: \u90e8\u5206\u4e00\u81f4\u3068\u5168\u4f53\u4e00\u81f4\u306e\u6df7\u540c<\/h4>\n\n\n\n<p>\u6700\u3082\u4e00\u822c\u7684\u306a\u9593\u9055\u3044\u306e\u4e00\u3064\u306f\u3001\u30d1\u30bf\u30fc\u30f3\u306b<code>^<\/code>\uff08\u884c\u982d\uff09\u3068<code>$<\/code>\uff08\u884c\u672b\uff09\u306e\u30a2\u30f3\u30ab\u30fc\u3092\u4f7f\u7528\u3057\u5fd8\u308c\u308b\u3053\u3068\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5371\u967a\u306a\u5b9f\u88c5\uff08\u90e8\u5206\u4e00\u81f4\uff09\nif (preg_match('\/[a-zA-Z0-9]+\/', $username)) {\n    \/\/ \u82f1\u6570\u5b57\u3092\u542b\u3093\u3067\u3044\u308c\u3070OK\n    \/\/ \"user&lt;script&gt;\" \u306e\u3088\u3046\u306a\u6587\u5b57\u5217\u3082\u901a\u904e\u3057\u3066\u3057\u307e\u3046\n}\n\n\/\/ \u5b89\u5168\u306a\u5b9f\u88c5\uff08\u5168\u4f53\u4e00\u81f4\uff09\nif (preg_match('\/^[a-zA-Z0-9]+$\/', $username)) {\n    \/\/ \u82f1\u6570\u5b57\u306e\u307f\u3067\u69cb\u6210\u3055\u308c\u308b\u5834\u5408\u306e\u307fOK\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-101\">\u843d\u3068\u3057\u7a742: \u56fd\u969b\u5316\u5bfe\u5fdc\u306e\u4e0d\u5099<\/h4>\n\n\n\n<p>\u591a\u8a00\u8a9e\u5bfe\u5fdc\u304c\u5fc5\u8981\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u306e\u6271\u3044\u306b\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u554f\u984c\u306e\u3042\u308b\u5b9f\u88c5\nif (preg_match('\/^[a-zA-Z]+$\/', $name)) {\n    \/\/ \u82f1\u5b57\u306e\u307f\u8a31\u53ef\uff08\u65e5\u672c\u8a9e\u3084\u4ed6\u306e\u8a00\u8a9e\u306e\u6587\u5b57\u306f\u62d2\u5426\uff09\n}\n\n\/\/ \u56fd\u969b\u5316\u5bfe\u5fdc\u306e\u5b9f\u88c5\nif (preg_match('\/^\\p{L}+$\/u', $name)) {\n    \/\/ \u4efb\u610f\u306e\u8a00\u8a9e\u306e\u6587\u5b57\u3092\u8a31\u53ef\n    \/\/ 'u'\u4fee\u98fe\u5b50\uff08UTF-8\u30e2\u30fc\u30c9\uff09\u304c\u91cd\u8981\n}\n<\/pre>\n\n\n\n<p><code>\\p{L}<\/code>\u306fUnicode\u6587\u5b57\u30d7\u30ed\u30d1\u30c6\u30a3\u3067\u3001\u4efb\u610f\u306e\u8a00\u8a9e\u306e\u6587\u5b57\u306b\u30de\u30c3\u30c1\u3057\u307e\u3059\u3002<code>u<\/code>\u4fee\u98fe\u5b50\u306fUTF-8\u30e2\u30fc\u30c9\u3092\u6709\u52b9\u306b\u3057\u3001\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u3092\u6b63\u3057\u304f\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u4e0d\u53ef\u6b20\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-102\">\u843d\u3068\u3057\u7a743: \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3068\u30b5\u30cb\u30bf\u30a4\u30ba\u306e\u6df7\u540c<\/h4>\n\n\n\n<p>\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\uff08\u691c\u8a3c\uff09\u3068\u30b5\u30cb\u30bf\u30a4\u30ba\uff08\u7121\u5bb3\u5316\uff09\u306f\u7570\u306a\u308b\u6982\u5ff5\u3067\u3059\u3002\u591a\u304f\u306e\u958b\u767a\u8005\u304c\u3053\u308c\u3089\u3092\u6df7\u540c\u3057\u3001\u9069\u5207\u306b\u5b9f\u88c5\u3057\u3066\u3044\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u9593\u9055\u3063\u305f\u30a2\u30d7\u30ed\u30fc\u30c1\nif (preg_match('\/&lt;script&gt;\/', $input) === 0) {\n    \/\/ &lt;script&gt;\u30bf\u30b0\u304c\u306a\u3051\u308c\u3070\u5b89\u5168\u3068\u5224\u65ad\uff08\u30d0\u30a4\u30d1\u30b9\u53ef\u80fd\uff09\n    echo $input;\n}\n\n\/\/ \u6b63\u3057\u3044\u30a2\u30d7\u30ed\u30fc\u30c1\n\/\/ 1. \u307e\u305a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\nif (preg_match('\/^[a-zA-Z0-9\\s.,!?]+$\/', $input)) {\n    \/\/ \u8a31\u53ef\u3055\u308c\u305f\u6587\u5b57\u306e\u307f\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\n    \n    \/\/ 2. \u3055\u3089\u306b\u30b5\u30cb\u30bf\u30a4\u30ba\n    $safe_input = htmlspecialchars($input, ENT_QUOTES, 'UTF-8');\n    echo $safe_input;\n} else {\n    echo \"\u4e0d\u6b63\u306a\u5165\u529b\u3067\u3059\u3002\";\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-103\">\u843d\u3068\u3057\u7a744: \u904e\u5270\u306b\u53b3\u683c\u307e\u305f\u306f\u7de9\u3059\u304e\u308b\u30d1\u30bf\u30fc\u30f3<\/h4>\n\n\n\n<p>\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30eb\u30fc\u30eb\u304c\u53b3\u3057\u3059\u304e\u308b\u3068\u6b63\u5f53\u306a\u30e6\u30fc\u30b6\u30fc\u304c\u4e0d\u4fbf\u3092\u611f\u3058\u3001\u7de9\u3059\u304e\u308b\u3068\u4e0d\u6b63\u306a\u5165\u529b\u3092\u8a31\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u904e\u5ea6\u306b\u53b3\u683c\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u691c\u8a3c\n$strict = '\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$\/';\n\/\/ .info \u3084 .museum \u306e\u3088\u3046\u306aTLD\u306f\u62d2\u5426\u3055\u308c\u308b\n\n\/\/ \u3088\u308a\u5b9f\u7528\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\n$practical = '\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/';\n\/\/ \u307e\u305f\u306f filter_var() \u3092\u4f7f\u7528\nif (filter_var($email, FILTER_VALIDATE_EMAIL)) {\n    \/\/ \u6709\u52b9\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-104\">\u843d\u3068\u3057\u7a745: \u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u306e\u60c5\u5831\u6f0f\u6d29<\/h4>\n\n\n\n<p>\u8a73\u7d30\u306a\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u653b\u6483\u8005\u306b\u6709\u7528\u306a\u60c5\u5831\u3092\u4e0e\u3048\u3066\u3057\u307e\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5371\u967a\u306a\u5b9f\u88c5\nif (!preg_match($pattern, $input)) {\n    echo \"\u5165\u529b '{$input}' \u306f\u30d1\u30bf\u30fc\u30f3 '{$pattern}' \u306b\u4e00\u81f4\u3057\u307e\u305b\u3093\";\n}\n\n\/\/ \u5b89\u5168\u306a\u5b9f\u88c5\nif (!preg_match($pattern, $input)) {\n    echo \"\u5165\u529b\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\";\n    \/\/ \u8a73\u7d30\u306f\u30ed\u30b0\u306b\u8a18\u9332\n    error_log(\"\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u5931\u6557: \u5165\u529b '{$input}' \u306f\u30d1\u30bf\u30fc\u30f3 '{$pattern}' \u306b\u4e00\u81f4\u3057\u307e\u305b\u3093\");\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-105\">\u307e\u3068\u3081: \u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5b8c\u5168\u4e00\u81f4\u3092\u78ba\u8a8d\u3059\u308b<\/strong>: \u30d1\u30bf\u30fc\u30f3\u306b<code>^<\/code>\u3068<code>$<\/code>\u3092\u4f7f\u7528<\/li>\n\n\n\n<li><strong>UTF-8\u30e2\u30fc\u30c9\u3092\u6709\u52b9\u306b\u3059\u308b<\/strong>: \u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u5bfe\u5fdc\u306e\u305f\u3081<code>u<\/code>\u4fee\u98fe\u5b50\u3092\u4f7f\u7528<\/li>\n\n\n\n<li><strong>\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3068\u30b5\u30cb\u30bf\u30a4\u30ba\u3092\u4f75\u7528\u3059\u308b<\/strong>: \u9069\u5207\u306a\u9806\u5e8f\u3067\u4e21\u65b9\u3092\u5b9f\u88c5<\/li>\n\n\n\n<li><strong>\u30db\u30ef\u30a4\u30c8\u30ea\u30b9\u30c8\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u63a1\u7528\u3059\u308b<\/strong>: \u7981\u6b62\u3059\u308b\u3082\u306e\u3067\u306f\u306a\u304f\u8a31\u53ef\u3059\u308b\u3082\u306e\u3092\u5b9a\u7fa9<\/li>\n\n\n\n<li><strong>\u8907\u6570\u306e\u691c\u8a3c\u30ec\u30a4\u30e4\u30fc\u3092\u5b9f\u88c5\u3059\u308b<\/strong>: \u6b63\u898f\u8868\u73fe\u3068\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u3092\u7d44\u307f\u5408\u308f\u305b\u308b<\/li>\n\n\n\n<li><strong>\u30e6\u30fc\u30b6\u30fc\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u306a\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u63d0\u4f9b\u3059\u308b<\/strong>: \u8a73\u7d30\u306f\u653b\u6483\u8005\u306b\u898b\u305b\u306a\u3044<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u610f\u8b58\u3059\u308b\u3053\u3068\u3067\u3001\u30bb\u30ad\u30e5\u30a2\u3067\u30e6\u30fc\u30b6\u30fc\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u306a\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-106\">\u6b63\u898f\u8868\u73feDoS\u653b\u6483\uff08ReDoS\uff09\u3092\u9632\u3050\u30d1\u30bf\u30fc\u30f3\u8a2d\u8a08<\/h3>\n\n\n\n<p>\u6b63\u898f\u8868\u73feDoS\u653b\u6483\uff08ReDoS: Regular Expression Denial of Service\uff09\u306f\u3001\u7279\u5b9a\u306e\u5165\u529b\u306b\u3088\u3063\u3066\u6b63\u898f\u8868\u73fe\u30a8\u30f3\u30b8\u30f3\u306e\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u51e6\u7406\u304c\u6307\u6570\u95a2\u6570\u7684\u306b\u5897\u52a0\u3057\u3001\u30b7\u30b9\u30c6\u30e0\u30ea\u30bd\u30fc\u30b9\u3092\u67af\u6e07\u3055\u305b\u308b\u653b\u6483\u3067\u3059\u3002\u3053\u306e\u653b\u6483\u306f\u6bd4\u8f03\u7684\u7c21\u5358\u306b\u5b9f\u884c\u3067\u304d\u308b\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001\u305d\u306e\u5f71\u97ff\u306f\u6df1\u523b\u3067\u3001\u30b5\u30fc\u30d0\u30fc\u3092\u6570\u5206\u304b\u3089\u6570\u6642\u9593\u306b\u308f\u305f\u3063\u3066\u5fdc\u7b54\u4e0d\u80fd\u306b\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-107\">\u5371\u967a\u306a\u30d1\u30bf\u30fc\u30f3\u306e\u7279\u5fb4<\/h4>\n\n\n\n<p>ReDoS\u653b\u6483\u306b\u8106\u5f31\u306a\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u7279\u5fb4\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30cd\u30b9\u30c8\u3057\u305f\u7e70\u308a\u8fd4\u3057<\/strong>: <code>(a+)+<\/code>, <code>(.*)*<\/code>, <code>(\\w+\\s?)+<\/code>\u306a\u3069<\/li>\n\n\n\n<li><strong>\u91cd\u8907\u3059\u308b\u9078\u629e\u80a2<\/strong>: <code>(a|a+b)<\/code>, <code>(.*a.*)|(.*b.*)<\/code>\u306a\u3069<\/li>\n\n\n\n<li><strong>\u66d6\u6627\u306a\u30d1\u30bf\u30fc\u30f3\u306e\u7d44\u307f\u5408\u308f\u305b<\/strong>: <code>.*a.*b<\/code>\u306a\u3069<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30d1\u30bf\u30fc\u30f3\u306f\u3001\u7279\u5b9a\u306e\u5165\u529b\uff08\u901a\u5e38\u306f\u307b\u307c\u30de\u30c3\u30c1\u3059\u308b\u304c\u308f\u305a\u304b\u306b\u7570\u306a\u308b\u6587\u5b57\u5217\uff09\u306b\u5bfe\u3057\u3066\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u304c\u6307\u6570\u95a2\u6570\u7684\u306b\u5897\u52a0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-108\">\u5b9f\u4f8b\u3067\u898b\u308b\u5371\u967a\u6027<\/h4>\n\n\n\n<p>\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5358\u7d14\u306b\u898b\u3048\u308b\u30d1\u30bf\u30fc\u30f3\u3092\u8003\u3048\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$pattern = '\/^(a+)+$\/';\n$input = 'aaaaaaaaaaaaaaaaaaaaaaaaaX';  \/\/ 'a'\u304c\u591a\u6570\u3042\u308a\u3001\u6700\u5f8c\u306b'X'\n\n$start_time = microtime(true);\n$result = preg_match($pattern, $input);\n$end_time = microtime(true);\n\necho \"\u51e6\u7406\u6642\u9593: \" . ($end_time - $start_time) . \"\u79d2\";\n\/\/ 'a'\u306e\u6570\u306b\u3088\u3063\u3066\u306f\u3001\u6570\u79d2\u3001\u6570\u5206\u3001\u307e\u305f\u306f\u6570\u6642\u9593\u304b\u304b\u308b\u53ef\u80fd\u6027\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30d1\u30bf\u30fc\u30f3\u306f\u3001\u3059\u3079\u3066\u300ca\u300d\u3067\u69cb\u6210\u3055\u308c\u308b\u6587\u5b57\u5217\u306b\u30de\u30c3\u30c1\u3059\u308b\u306f\u305a\u3067\u3059\u304c\u3001\u6700\u5f8c\u306b\u300cX\u300d\u304c\u3042\u308b\u5165\u529b\u3067\u306f\u3001\u6b63\u898f\u8868\u73fe\u30a8\u30f3\u30b8\u30f3\u306f\u3042\u3089\u3086\u308b\u7d44\u307f\u5408\u308f\u305b\u3092\u8a66\u307f\u3088\u3046\u3068\u3057\u3066\u81a8\u5927\u306a\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-109\">\u5b89\u5168\u306a\u30d1\u30bf\u30fc\u30f3\u8a2d\u8a08<\/h4>\n\n\n\n<p>ReDoS\u653b\u6483\u3092\u9632\u3050\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u304c\u6709\u52b9\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u975e\u8caa\u6b32\u306a\u91cf\u6307\u5b9a\u5b50\u3092\u4f7f\u7528\u3059\u308b<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5371\u967a\u306a\u30d1\u30bf\u30fc\u30f3\n$dangerous = '\/.*([0-9]+).*\/';\n\n\/\/ \u3088\u308a\u5b89\u5168\u306a\u30d1\u30bf\u30fc\u30f3\n$safer = '\/.*?([0-9]+).*?\/';\n<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30a2\u30c8\u30df\u30c3\u30af\u30b0\u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3059\u308b<\/strong><\/li>\n<\/ol>\n\n\n\n<p>\u30a2\u30c8\u30df\u30c3\u30af\u30b0\u30eb\u30fc\u30d7 <code>(?&gt;...)<\/code> \u306f\u3001\u4e00\u5ea6\u30de\u30c3\u30c1\u3057\u305f\u3089\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3067\u623b\u3089\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5371\u967a\u306a\u30d1\u30bf\u30fc\u30f3\n$dangerous = '\/^(a+)+$\/';\n\n\/\/ \u3088\u308a\u5b89\u5168\u306a\u30d1\u30bf\u30fc\u30f3\n$safer = '\/^(?&gt;(a+))+$\/';\n<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30d1\u30bf\u30fc\u30f3\u3092\u5206\u5272\u3059\u308b<\/strong><\/li>\n<\/ol>\n\n\n\n<p>\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u3092\u8907\u6570\u306e\u5358\u7d14\u306a\u30b9\u30c6\u30c3\u30d7\u306b\u5206\u5272\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5371\u967a\u306a\u30d1\u30bf\u30fc\u30f3\n$dangerous = '\/^(\\w+\\s?)+$\/';\n\n\/\/ \u3088\u308a\u5b89\u5168\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\nfunction validateWords($input) {\n    \/\/ \u307e\u305a\u57fa\u672c\u7684\u306a\u6587\u5b57\u30c1\u30a7\u30c3\u30af\n    if (!preg_match('\/^[\\w\\s]+$\/', $input)) {\n        return false;\n    }\n    \n    \/\/ \u6b21\u306b\u69cb\u9020\u3092\u30c1\u30a7\u30c3\u30af\n    $words = explode(' ', trim($input));\n    foreach ($words as $word) {\n        if (!preg_match('\/^\\w+$\/', $word)) {\n            return false;\n        }\n    }\n    \n    return true;\n}\n<\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u3092\u4f7f\u7528\u3059\u308b<\/strong><\/li>\n<\/ol>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u51e6\u7406\u306b\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u6709\u52b9\u306a\u5bfe\u7b56\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u4ed8\u304d\u306e\u6b63\u898f\u8868\u73fe\u51e6\u7406\nfunction safeMatch($pattern, $subject, &amp;$matches = null, $timeout = 1) {\n    \/\/ \u73fe\u5728\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u3092\u4fdd\u5b58\n    $previous_timeout = ini_get('max_execution_time');\n    \n    \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3092\u8a2d\u5b9a\n    set_time_limit($timeout);\n    \n    try {\n        $result = preg_match($pattern, $subject, $matches);\n        \n        \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u3092\u5143\u306b\u623b\u3059\n        set_time_limit($previous_timeout);\n        \n        return $result;\n    } catch (Exception $e) {\n        \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u307e\u305f\u306f\u305d\u306e\u4ed6\u306e\u4f8b\u5916\n        error_log(\"\u6b63\u898f\u8868\u73fe\u51e6\u7406\u30a8\u30e9\u30fc: \" . $e-&gt;getMessage());\n        \n        \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u3092\u5143\u306b\u623b\u3059\n        set_time_limit($previous_timeout);\n        \n        return false;\n    }\n}\n\n\/\/ \u4f7f\u7528\u4f8b\nif (safeMatch($potentially_dangerous_pattern, $input, $matches, 2)) {\n    \/\/ 2\u79d2\u4ee5\u5185\u306b\u51e6\u7406\u304c\u5b8c\u4e86\u3057\u305f\u5834\u5408\u306e\u51e6\u7406\n} else {\n    \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u307e\u305f\u306f\u30de\u30c3\u30c1\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u306e\u51e6\u7406\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-110\">\u6b63\u898f\u8868\u73fe\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u76e3\u67fb<\/h4>\n\n\n\n<p>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b89\u5168\u6027\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5bfe\u7b56\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d1\u30bf\u30fc\u30f3\u306e\u8907\u96d1\u3055\u3092\u5236\u9650\u3059\u308b<\/strong>: \u5fc5\u8981\u4ee5\u4e0a\u306b\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u306f\u907f\u3051\u308b<\/li>\n\n\n\n<li><strong>\u5165\u529b\u306e\u9577\u3055\u3092\u5236\u9650\u3059\u308b<\/strong>: \u6975\u7aef\u306b\u9577\u3044\u5165\u529b\u3092\u62d2\u5426\u3059\u308b<\/li>\n\n\n\n<li><strong>\u9759\u7684\u89e3\u6790\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3059\u308b<\/strong>: \u5371\u967a\u306a\u30d1\u30bf\u30fc\u30f3\u3092\u691c\u51fa\u3059\u308b\u30c4\u30fc\u30eb\u3092\u5229\u7528\u3059\u308b<\/li>\n\n\n\n<li><strong>\u8ca0\u8377\u30c6\u30b9\u30c8\u3092\u5b9f\u65bd\u3059\u308b<\/strong>: \u7279\u306b\u51e6\u7406\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u5165\u529b\u30d1\u30bf\u30fc\u30f3\u3067\u30c6\u30b9\u30c8\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5165\u529b\u306e\u9577\u3055\u3092\u5236\u9650\u3059\u308b\u4f8b\nfunction validateWithLengthLimit($pattern, $input, $max_length = 100) {\n    if (strlen($input) &gt; $max_length) {\n        return false; \/\/ \u9577\u3059\u304e\u308b\u5165\u529b\u306f\u62d2\u5426\n    }\n    \n    return preg_match($pattern, $input) === 1;\n}\n<\/pre>\n\n\n\n<p>\u6b63\u898f\u8868\u73feDoS\u653b\u6483\u306f\u3001\u898b\u904e\u3054\u3055\u308c\u304c\u3061\u3067\u3059\u304c\u6df1\u523b\u306a\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u5b89\u5168\u306a\u30d1\u30bf\u30fc\u30f3\u8a2d\u8a08\u3068\u9069\u5207\u306a\u9632\u5fa1\u7b56\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u3053\u306e\u3088\u3046\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af\u3092\u5927\u5e45\u306b\u8efd\u6e1b\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-111\">\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af7\uff1a\u30c7\u30d0\u30c3\u30b0\u3068\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\u5bfe\u5fdc<\/h2>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u306f\u5f37\u529b\u3067\u3059\u304c\u3001\u69cb\u6587\u304c\u8907\u96d1\u306a\u305f\u3081\u3001\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u3084\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u554f\u984c\u306b\u60a9\u307e\u3055\u308c\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u7279\u306b\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u3084\u5927\u304d\u306a\u30c6\u30ad\u30b9\u30c8\u3092\u6271\u3046\u5834\u5408\u3001\u554f\u984c\u306e\u30c7\u30d0\u30c3\u30b0\u306f\u56f0\u96e3\u306b\u306a\u308a\u304c\u3061\u3067\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001<code>preg_match<\/code>\u95a2\u9023\u306e\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\u3068\u305d\u306e\u52b9\u679c\u7684\u306a\u30c7\u30d0\u30c3\u30b0\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-112\">\u4e00\u822c\u7684\u306a\u6b63\u898f\u8868\u73fe\u30a8\u30e9\u30fc\u3068\u305d\u306e\u539f\u56e0<\/h3>\n\n\n\n<p>PHP\u306e\u6b63\u898f\u8868\u73fe\u95a2\u6570\u3067\u767a\u751f\u3059\u308b\u4e3b\u306a\u30a8\u30e9\u30fc\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u3082\u306e\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u69cb\u6587\u30a8\u30e9\u30fc<\/strong>: \u62ec\u5f27\u306e\u4e0d\u4e00\u81f4\u3001\u7121\u52b9\u306a\u4fee\u98fe\u5b50\u3001\u7121\u52b9\u306a\u6587\u5b57\u30af\u30e9\u30b9\u306a\u3069<\/li>\n\n\n\n<li><strong>\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u5236\u9650\u8d85\u904e<\/strong>: \u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u306b\u3088\u308b\u30ea\u30bd\u30fc\u30b9\u5236\u9650\u8d85\u904e<\/li>\n\n\n\n<li><strong>\u518d\u5e30\u5236\u9650\u8d85\u904e<\/strong>: \u30cd\u30b9\u30c8\u3055\u308c\u305f\u30d1\u30bf\u30fc\u30f3\u306e\u6df1\u3059\u304e\u308b\u518d\u5e30<\/li>\n\n\n\n<li><strong>\u4e0d\u6b63\u306aUTF-8\u30b7\u30fc\u30b1\u30f3\u30b9<\/strong>: UTF-8\u30e2\u30fc\u30c9\u3067\u7121\u52b9\u306a\u6587\u5b57\u5217\u3092\u51e6\u7406\u3057\u305f\u5834\u5408<\/li>\n\n\n\n<li><strong>JIT\u30b9\u30bf\u30c3\u30af\u5236\u9650\u8d85\u904e<\/strong>: JIT\u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u30b9\u30bf\u30c3\u30af\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3059\u308b\u3068\u3001<code>preg_match<\/code>\u95a2\u6570\u306f<code>false<\/code>\u3092\u8fd4\u3057\u307e\u3059\u304c\u3001\u5177\u4f53\u7684\u306a\u30a8\u30e9\u30fc\u306e\u539f\u56e0\u3092\u77e5\u308b\u306b\u306f\u8ffd\u52a0\u306e\u5bfe\u5fdc\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-113\">preg_last_error\u3092\u6d3b\u7528\u3057\u305f\u30a8\u30e9\u30fc\u306e\u7279\u5b9a\u3068\u89e3\u6c7a\u6cd5<\/h3>\n\n\n\n<p><code>preg_last_error<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u6700\u5f8c\u306b\u5b9f\u884c\u3055\u308c\u305f\u6b63\u898f\u8868\u73fe\u95a2\u6570\u306e\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$pattern = '\/\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\/';\n$subject = '\u5bfe\u8c61\u30c6\u30ad\u30b9\u30c8';\n\nif (($result = preg_match($pattern, $subject, $matches)) === false) {\n    $error_code = preg_last_error();\n    $error_message = '';\n    \n    switch ($error_code) {\n        case PREG_NO_ERROR:\n            $error_message = '\u30a8\u30e9\u30fc\u306f\u3042\u308a\u307e\u305b\u3093';\n            break;\n        case PREG_INTERNAL_ERROR:\n            $error_message = '\u5185\u90e8PCRE\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f';\n            break;\n        case PREG_BACKTRACK_LIMIT_ERROR:\n            $error_message = '\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30af\u5236\u9650\u3092\u8d85\u904e\u3057\u307e\u3057\u305f';\n            break;\n        case PREG_RECURSION_LIMIT_ERROR:\n            $error_message = '\u518d\u5e30\u5236\u9650\u3092\u8d85\u904e\u3057\u307e\u3057\u305f';\n            break;\n        case PREG_BAD_UTF8_ERROR:\n            $error_message = '\u4e0d\u6b63\u306aUTF-8\u30b7\u30fc\u30b1\u30f3\u30b9\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f';\n            break;\n        case PREG_BAD_UTF8_OFFSET_ERROR:\n            $error_message = '\u4e0d\u6b63\u306aUTF-8\u30aa\u30d5\u30bb\u30c3\u30c8\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f';\n            break;\n        case PREG_JIT_STACKLIMIT_ERROR:\n            $error_message = 'JIT\u30b9\u30bf\u30c3\u30af\u5236\u9650\u3092\u8d85\u904e\u3057\u307e\u3057\u305f';\n            break;\n        default:\n            $error_message = '\u672a\u77e5\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f';\n    }\n    \n    echo \"\u6b63\u898f\u8868\u73fe\u30a8\u30e9\u30fc: {$error_message} (\u30b3\u30fc\u30c9: {$error_code})\";\n}\n<\/pre>\n\n\n\n<p>\u7279\u306b\u983b\u7e41\u306b\u767a\u751f\u3059\u308b\u300c\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30af\u5236\u9650\u8d85\u904e\u300d\u30a8\u30e9\u30fc\u306e\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u5bfe\u7b56\u304c\u52b9\u679c\u7684\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30af\u5236\u9650\u3092\u4e00\u6642\u7684\u306b\u5897\u3084\u3059\nini_set('pcre.backtrack_limit', 1000000); \/\/ \u30c7\u30d5\u30a9\u30eb\u30c8\u306f100\u4e07\n\n\/\/ \u307e\u305f\u306f\u3001\u3088\u308a\u52b9\u7387\u7684\u306a\u30d1\u30bf\u30fc\u30f3\u306b\u4fee\u6b63\n\/\/ \u4f8b: \/.*A.*B.*\/ \u2192 \/[^A]*A[^B]*B.*\/\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-114\">\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u306e\u30c7\u30d0\u30c3\u30b0\u624b\u6cd5<\/h3>\n\n\n\n<p>\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u3092\u30c7\u30d0\u30c3\u30b0\u3059\u308b\u52b9\u679c\u7684\u306a\u65b9\u6cd5\u306f\u3001\u6bb5\u968e\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d1\u30bf\u30fc\u30f3\u3092\u5206\u5272\u3059\u308b<\/strong>: \u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u3092\u5c0f\u3055\u306a\u90e8\u5206\u306b\u5206\u5272\u3057\u3001\u5404\u90e8\u5206\u304c\u671f\u5f85\u901a\u308a\u52d5\u4f5c\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d<\/li>\n\n\n\n<li><strong>\u5358\u7d14\u306a\u30b1\u30fc\u30b9\u304b\u3089\u59cb\u3081\u308b<\/strong>: \u6700\u3082\u5358\u7d14\u306a\u5165\u529b\u304b\u3089\u59cb\u3081\u3066\u5f90\u3005\u306b\u8907\u96d1\u306a\u30b1\u30fc\u30b9\u306b\u62e1\u5f35<\/li>\n\n\n\n<li><strong>\u30d1\u30bf\u30fc\u30f3\u3092\u6bb5\u968e\u7684\u306b\u69cb\u7bc9\u3059\u308b<\/strong>: \u57fa\u672c\u30d1\u30bf\u30fc\u30f3\u304b\u3089\u59cb\u3081\u3066\u3001\u4e00\u5ea6\u306b\u4e00\u3064\u306e\u8981\u7d20\u3092\u8ffd\u52a0<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u8907\u96d1\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u691c\u8a3c\u30d1\u30bf\u30fc\u30f3\u306e\u30c7\u30d0\u30c3\u30b0\u4f8b\n$patterns = [\n    \/\/ \u30b9\u30c6\u30c3\u30d71: \u30ed\u30fc\u30ab\u30eb\u90e8\u5206\u306e\u307f\n    '\/^[a-zA-Z0-9._%+-]+$\/',\n    \n    \/\/ \u30b9\u30c6\u30c3\u30d72: @\u8a18\u53f7\u3068\u30c9\u30e1\u30a4\u30f3\u90e8\u5206\u3092\u8ffd\u52a0\n    '\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+$\/',\n    \n    \/\/ \u30b9\u30c6\u30c3\u30d73: \u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30c9\u30e1\u30a4\u30f3\u3092\u8ffd\u52a0\n    '\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/'\n];\n\n$test_inputs = [\n    'user',\n    'user@example',\n    'user@example.com',\n    'user.name+tag@example.co.jp'\n];\n\n\/\/ \u5404\u30d1\u30bf\u30fc\u30f3\u3068\u5165\u529b\u306e\u7d44\u307f\u5408\u308f\u305b\u3092\u30c6\u30b9\u30c8\nforeach ($patterns as $i =&gt; $pattern) {\n    echo \"\u30d1\u30bf\u30fc\u30f3 \" . ($i + 1) . \": $pattern\\n\";\n    \n    foreach ($test_inputs as $input) {\n        $result = preg_match($pattern, $input);\n        echo \"  \u5165\u529b: '$input' =&gt; \" . ($result ? '\u4e00\u81f4' : '\u4e0d\u4e00\u81f4') . \"\\n\";\n    }\n    \n    echo \"\\n\";\n}\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-115\">\u5916\u90e8\u30c4\u30fc\u30eb\u306e\u6d3b\u7528<\/h3>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u30aa\u30f3\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u306f\u6b63\u898f\u8868\u73fe\u306e\u30c7\u30d0\u30c3\u30b0\u306b\u975e\u5e38\u306b\u5f79\u7acb\u3061\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>regex101.com<\/strong>: \u8996\u899a\u7684\u306a\u4e00\u81f4\u8868\u793a\u3001\u8aac\u660e\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5206\u6790\u306a\u3069\u591a\u6a5f\u80fd<\/li>\n\n\n\n<li><strong>regexpal.com<\/strong>: \u30b7\u30f3\u30d7\u30eb\u306a\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30c6\u30b9\u30c8\u30c4\u30fc\u30eb<\/li>\n\n\n\n<li><strong>debuggex.com<\/strong>: \u30d1\u30bf\u30fc\u30f3\u306e\u8996\u899a\u7684\u306a\u56f3\u8868\u793a<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30d1\u30bf\u30fc\u30f3\u306e\u52d5\u4f5c\u3092\u8996\u899a\u7684\u306b\u78ba\u8a8d\u3067\u304d\u3001\u554f\u984c\u306e\u3042\u308b\u90e8\u5206\u3092\u7279\u5b9a\u3057\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-116\">PHP\u306e\u8a2d\u5b9a\u8abf\u6574<\/h3>\n\n\n\n<p>\u7d99\u7d9a\u7684\u306b\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30af\u5236\u9650\u3084\u518d\u5e30\u5236\u9650\u306b\u60a9\u307e\u3055\u308c\u308b\u5834\u5408\u306f\u3001PHP\u8a2d\u5b9a\u3092\u8abf\u6574\u3059\u308b\u3053\u3068\u3082\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ php.ini\u3067\u8a2d\u5b9a\n; pcre.backtrack_limit=1000000\n; pcre.recursion_limit=100000\n\n\/\/ \u307e\u305f\u306f\u5b9f\u884c\u6642\u306b\u8abf\u6574\nini_set('pcre.backtrack_limit', 2000000);\nini_set('pcre.recursion_limit', 200000);\n<\/pre>\n\n\n\n<p>\u305f\u3060\u3057\u3001\u5236\u9650\u3092\u5358\u306b\u5897\u3084\u3059\u3060\u3051\u3067\u306a\u304f\u3001\u30d1\u30bf\u30fc\u30f3\u306e\u6700\u9069\u5316\u3082\u4e26\u884c\u3057\u3066\u884c\u3046\u3079\u304d\u3067\u3059\u3002\u5236\u9650\u5024\u306e\u5897\u52a0\u306f\u3042\u304f\u307e\u3067\u3082\u4e00\u6642\u7684\u306a\u5bfe\u51e6\u6cd5\u3068\u8003\u3048\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u306e\u30c7\u30d0\u30c3\u30b0\u306f\u6642\u306b\u8907\u96d1\u306b\u306a\u308a\u307e\u3059\u304c\u3001\u6bb5\u968e\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u3068\u9069\u5207\u306a\u30c4\u30fc\u30eb\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u554f\u984c\u3092\u52b9\u7387\u7684\u306b\u7279\u5b9a\u30fb\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30b5\u30d6\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5177\u4f53\u7684\u306a\u30c7\u30d0\u30c3\u30b0\u624b\u6cd5\u306b\u3064\u3044\u3066\u3055\u3089\u306b\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-117\">preg_last_error\u3092\u6d3b\u7528\u3057\u305f\u30a8\u30e9\u30fc\u306e\u7279\u5b9a\u3068\u89e3\u6c7a\u6cd5<\/h3>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u95a2\u6570\uff08<code>preg_match<\/code>\u306a\u3069\uff09\u304c\u30a8\u30e9\u30fc\u3067<code>false<\/code>\u3092\u8fd4\u3057\u305f\u5834\u5408\u3001\u5358\u306b\u300c\u5931\u6557\u3057\u305f\u300d\u3068\u3044\u3046\u60c5\u5831\u3060\u3051\u3067\u306f\u539f\u56e0\u306e\u7279\u5b9a\u304c\u96e3\u3057\u3044\u3067\u3059\u3002\u305d\u3053\u3067\u5f79\u7acb\u3064\u306e\u304c<code>preg_last_error()<\/code>\u95a2\u6570\u3067\u3059\u3002\u3053\u306e\u95a2\u6570\u306f\u3001\u6700\u5f8c\u306b\u5b9f\u884c\u3055\u308c\u305f\u6b63\u898f\u8868\u73fe\u95a2\u6570\u306e\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u3092\u8fd4\u3059\u305f\u3081\u3001\u5177\u4f53\u7684\u306a\u554f\u984c\u3092\u7279\u5b9a\u3057\u3001\u9069\u5207\u306a\u5bfe\u7b56\u3092\u8b1b\u3058\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-118\">\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u306e\u53d6\u5f97\u3068\u89e3\u91c8<\/h4>\n\n\n\n<p><code>preg_last_error()<\/code>\u304c\u8fd4\u3059\u6570\u5024\u3092\u5b9a\u6570\u3068\u6bd4\u8f03\u3059\u308b\u3053\u3068\u3067\u3001\u5177\u4f53\u7684\u306a\u30a8\u30e9\u30fc\u306e\u7a2e\u985e\u3092\u7279\u5b9a\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function checkRegexError() {\n    $error_code = preg_last_error();\n    $error_name = 'UNKNOWN';\n    $error_message = '';\n    \n    switch ($error_code) {\n        case PREG_NO_ERROR:\n            $error_name = 'PREG_NO_ERROR';\n            $error_message = '\u30a8\u30e9\u30fc\u306f\u3042\u308a\u307e\u305b\u3093';\n            break;\n        case PREG_INTERNAL_ERROR:\n            $error_name = 'PREG_INTERNAL_ERROR';\n            $error_message = '\u5185\u90e8PCRE\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f';\n            break;\n        case PREG_BACKTRACK_LIMIT_ERROR:\n            $error_name = 'PREG_BACKTRACK_LIMIT_ERROR';\n            $error_message = '\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30af\u5236\u9650\u3092\u8d85\u904e\u3057\u307e\u3057\u305f';\n            break;\n        case PREG_RECURSION_LIMIT_ERROR:\n            $error_name = 'PREG_RECURSION_LIMIT_ERROR';\n            $error_message = '\u518d\u5e30\u5236\u9650\u3092\u8d85\u904e\u3057\u307e\u3057\u305f';\n            break;\n        case PREG_BAD_UTF8_ERROR:\n            $error_name = 'PREG_BAD_UTF8_ERROR';\n            $error_message = '\u4e0d\u6b63\u306aUTF-8\u30b7\u30fc\u30b1\u30f3\u30b9\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f';\n            break;\n        case PREG_BAD_UTF8_OFFSET_ERROR:\n            $error_name = 'PREG_BAD_UTF8_OFFSET_ERROR';\n            $error_message = '\u4e0d\u6b63\u306aUTF-8\u30aa\u30d5\u30bb\u30c3\u30c8\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f';\n            break;\n        case PREG_JIT_STACKLIMIT_ERROR:\n            $error_name = 'PREG_JIT_STACKLIMIT_ERROR';\n            $error_message = 'JIT\u30b9\u30bf\u30c3\u30af\u5236\u9650\u3092\u8d85\u904e\u3057\u307e\u3057\u305f';\n            break;\n    }\n    \n    return [\n        'code' =&gt; $error_code,\n        'name' =&gt; $error_name,\n        'message' =&gt; $error_message\n    ];\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-119\">\u5b9f\u7528\u7684\u306a\u30e9\u30c3\u30d1\u30fc\u95a2\u6570\u306e\u5b9f\u88c5<\/h4>\n\n\n\n<p>\u30a8\u30e9\u30fc\u51e6\u7406\u3092\u542b\u3080\u30e9\u30c3\u30d1\u30fc\u95a2\u6570\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u5805\u7262\u306a\u6b63\u898f\u8868\u73fe\u51e6\u7406\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/**\n * \u30a8\u30e9\u30fc\u51e6\u7406\u4ed8\u304d\u306e\u5b89\u5168\u306apreg_match\u95a2\u6570\n * \n * @param string $pattern \u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\n * @param string $subject \u691c\u7d22\u5bfe\u8c61\u306e\u6587\u5b57\u5217\n * @param array &amp;$matches \u30de\u30c3\u30c1\u30f3\u30b0\u7d50\u679c\u3092\u683c\u7d0d\u3059\u308b\u914d\u5217\uff08\u53c2\u7167\u6e21\u3057\uff09\n * @param bool $throw_exception \u30a8\u30e9\u30fc\u6642\u306b\u4f8b\u5916\u3092\u30b9\u30ed\u30fc\u3059\u308b\u304b\n * @return mixed \u30de\u30c3\u30c1\u3057\u305f\u5834\u5408\u306f1\u3001\u30de\u30c3\u30c1\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u306f0\u3001\u30a8\u30e9\u30fc\u6642\u306ffalse\u307e\u305f\u306f\u4f8b\u5916\n * @throws Exception \u30a8\u30e9\u30fc\u767a\u751f\u6642\u3001$throw_exception\u304ctrue\u306e\u5834\u5408\n *\/\nfunction safe_preg_match($pattern, $subject, &amp;$matches = null, $throw_exception = false) {\n    \/\/ preg_match\u5b9f\u884c\n    $result = preg_match($pattern, $subject, $matches);\n    \n    \/\/ \u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\n    if ($result === false) {\n        $error = checkRegexError();\n        \n        \/\/ \u30a8\u30e9\u30fc\u3092\u30ed\u30b0\u306b\u8a18\u9332\n        error_log(\"\u6b63\u898f\u8868\u73fe\u30a8\u30e9\u30fc: {$error['name']} - {$error['message']} - \u30d1\u30bf\u30fc\u30f3: {$pattern}\");\n        \n        \/\/ \u4f8b\u5916\u3092\u30b9\u30ed\u30fc\u3059\u308b\u304b\u3001false\u3092\u8fd4\u3059\u304b\n        if ($throw_exception) {\n            throw new Exception(\"\u6b63\u898f\u8868\u73fe\u30a8\u30e9\u30fc: {$error['message']}\", $error['code']);\n        }\n        \n        return false;\n    }\n    \n    return $result;\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-120\">\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u7b56<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>PREG_BACKTRACK_LIMIT_ERROR<\/strong> \u2013 \u6700\u3082\u983b\u7e41\u306b\u767a\u751f\u3059\u308b\u30a8\u30e9\u30fc\u306e\u4e00\u3064\u3067\u3059\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30af\u5236\u9650\u3092\u8d85\u904e\u3059\u308b\u30d1\u30bf\u30fc\u30f3\u306e\u4f8b\n$pattern = '\/^(a+)*$\/';\n$long_input = str_repeat('a', 100000) . 'b';\n\n\/\/ \u30a8\u30e9\u30fc\u5bfe\u7b561: \u5236\u9650\u5024\u3092\u4e00\u6642\u7684\u306b\u5897\u3084\u3059\n$original_limit = ini_get('pcre.backtrack_limit');\nini_set('pcre.backtrack_limit', 10000000);\n$result = safe_preg_match($pattern, $long_input, $matches);\nini_set('pcre.backtrack_limit', $original_limit);\n\n\/\/ \u30a8\u30e9\u30fc\u5bfe\u7b562: \u3088\u308a\u52b9\u7387\u7684\u306a\u30d1\u30bf\u30fc\u30f3\u306b\u4fee\u6b63\n$better_pattern = '\/^a*$\/'; \/\/ \u5143\u306e\u30d1\u30bf\u30fc\u30f3\u306e\u610f\u56f3\u3092\u4fdd\u3061\u3064\u3064\u3001\u7c21\u6f54\u306b\n$result = safe_preg_match($better_pattern, $long_input, $matches);\n<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>PREG_BAD_UTF8_ERROR<\/strong> \u2013 UTF-8\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u554f\u984c\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u4e0d\u6b63\u306aUTF-8\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u542b\u3080\u6587\u5b57\u5217\n$bad_utf8 = \"\u6b63\u5e38\u306a\u6587\u5b57\u5217\" . \"\\xC0\\xAF\" . \"\u6b63\u5e38\u306a\u7d9a\u304d\";\n\n\/\/ \u30a8\u30e9\u30fc\u5bfe\u7b56: \u6587\u5b57\u5217\u306e\u691c\u8a3c\u3068\u4fee\u6b63\nif (!mb_check_encoding($bad_utf8, 'UTF-8')) {\n    \/\/ \u4e0d\u6b63\u306a\u6587\u5b57\u3092\u7f6e\u63db\u307e\u305f\u306f\u524a\u9664\n    $fixed_utf8 = mb_convert_encoding($bad_utf8, 'UTF-8', 'UTF-8');\n    \/\/ \u307e\u305f\u306f iconv \u3092\u4f7f\u7528: $fixed_utf8 = iconv('UTF-8', 'UTF-8\/\/IGNORE', $bad_utf8);\n    $result = safe_preg_match('\/pattern\/u', $fixed_utf8, $matches);\n} else {\n    $result = safe_preg_match('\/pattern\/u', $bad_utf8, $matches);\n}\n<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>PREG_JIT_STACKLIMIT_ERROR<\/strong> \u2013 JIT\u30b9\u30bf\u30c3\u30af\u5236\u9650\u8d85\u904e\uff08PHP 7\u4ee5\u964d\uff09\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ JIT\u30b9\u30bf\u30c3\u30af\u5236\u9650\u3092\u8d85\u904e\u3059\u308b\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\n$complex_pattern = '\/(?&gt;(a+))*\/';\n$difficult_input = str_repeat('a', 50000) . 'b';\n\n\/\/ \u30a8\u30e9\u30fc\u5bfe\u7b56: JIT\u3092\u4e00\u6642\u7684\u306b\u7121\u52b9\u5316\n$original_jit = ini_get('pcre.jit');\nini_set('pcre.jit', 0);\n$result = safe_preg_match($complex_pattern, $difficult_input, $matches);\nini_set('pcre.jit', $original_jit);\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-121\">\u30a8\u30e9\u30fc\u4e88\u9632\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6bb5\u968e\u7684\u306a\u30c6\u30b9\u30c8<\/strong>: \u6b63\u898f\u8868\u73fe\u3092\u4f5c\u6210\u3059\u308b\u969b\u306f\u3001\u5c0f\u3055\u306a\u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\u3067\u6bb5\u968e\u7684\u306b\u30c6\u30b9\u30c8<\/li>\n\n\n\n<li><strong>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a<\/strong>: \u6642\u9593\u306e\u304b\u304b\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u51e6\u7406\u306b\u306f\u6642\u9593\u5236\u9650\u3092\u8a2d\u5b9a<\/li>\n\n\n\n<li><strong>\u5165\u529b\u30b5\u30a4\u30ba\u306e\u5236\u9650<\/strong>: \u6975\u7aef\u306b\u5927\u304d\u306a\u5165\u529b\u3092\u51e6\u7406\u524d\u306b\u30c1\u30a7\u30c3\u30af<\/li>\n\n\n\n<li><strong>\u4f8b\u5916\u51e6\u7406<\/strong>: \u91cd\u8981\u306a\u51e6\u7406\u3067\u306f\u4f8b\u5916\u51e6\u7406\u3092\u5b9f\u88c5<\/li>\n\n\n\n<li><strong>\u30ed\u30b0\u8a18\u9332<\/strong>: \u30a8\u30e9\u30fc\u60c5\u5831\u3092\u8a73\u7d30\u306b\u30ed\u30b0\u306b\u8a18\u9332\u3057\u3001\u30d1\u30bf\u30fc\u30f3\u3092\u6539\u5584\u3059\u308b\u6750\u6599\u306b<\/li>\n<\/ol>\n\n\n\n<p><code>preg_last_error()<\/code>\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u6b63\u898f\u8868\u73fe\u30a8\u30e9\u30fc\u3092\u52b9\u7387\u7684\u306b\u7279\u5b9a\u3057\u3001\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u306e\u3088\u3046\u306a\u5805\u7262\u306a\u30a8\u30e9\u30fc\u51e6\u7406\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-122\">\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u306e\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u3067\u306e\u30c7\u30d0\u30c3\u30b0<\/h3>\n\n\n\n<p>\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u306e\u30c7\u30d0\u30c3\u30b0\u306f\u3001\u307e\u308b\u3067\u8b0e\u89e3\u304d\u306e\u3088\u3046\u306a\u30d7\u30ed\u30bb\u30b9\u3067\u3059\u3002\u300c\u306a\u305c\u3053\u306e\u30d1\u30bf\u30fc\u30f3\u304c\u60f3\u5b9a\u901a\u308a\u306b\u52d5\u4f5c\u3057\u306a\u3044\u306e\u304b\uff1f\u300d\u3068\u3044\u3046\u554f\u3044\u306b\u7b54\u3048\u308b\u305f\u3081\u306b\u306f\u3001\u69cb\u9020\u5316\u3055\u308c\u305f\u30a2\u30d7\u30ed\u30fc\u30c1\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u306e\u7ae0\u3067\u306f\u3001\u96e3\u89e3\u306a\u6b63\u898f\u8868\u73fe\u3092\u52b9\u7387\u7684\u306b\u30c7\u30d0\u30c3\u30b0\u3059\u308b\u305f\u3081\u306e\u6bb5\u968e\u7684\u306a\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-123\">\u30dc\u30c8\u30e0\u30a2\u30c3\u30d7\u30fb\u30a2\u30d7\u30ed\u30fc\u30c1\uff1a\u30d1\u30bf\u30fc\u30f3\u3092\u5206\u89e3\u3057\u3066\u69cb\u7bc9\u3059\u308b<\/h4>\n\n\n\n<p>\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u3092\u30c7\u30d0\u30c3\u30b0\u3059\u308b\u6700\u3082\u52b9\u679c\u7684\u306a\u65b9\u6cd5\u306e\u4e00\u3064\u306f\u3001\u30d1\u30bf\u30fc\u30f3\u3092\u5c0f\u3055\u306a\u90e8\u5206\u306b\u5206\u89e3\u3057\u3001\u305d\u308c\u305e\u308c\u304c\u6b63\u3057\u304f\u6a5f\u80fd\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u306a\u304c\u3089\u3001\u5f90\u3005\u306b\u518d\u69cb\u7bc9\u3057\u3066\u3044\u304f\u3053\u3068\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function test_pattern($pattern, $tests, $description = '') {\n    echo \"\u30c6\u30b9\u30c8: \" . ($description ? $description : $pattern) . \"\\n\";\n    \n    foreach ($tests as $test) {\n        $subject = $test['input'];\n        $expected = $test['expected'];\n        \n        $result = preg_match($pattern, $subject, $matches);\n        $actual = ($result === 1);\n        \n        echo \"  \u5165\u529b: '$subject' =&gt; \" . \n             ($actual === $expected ? \"\u2713\" : \"\u2717\") . \n             \" (\u671f\u5f85\u5024: \" . ($expected ? \"\u4e00\u81f4\" : \"\u4e0d\u4e00\u81f4\") . \n             \", \u5b9f\u969b: \" . ($actual ? \"\u4e00\u81f4\" : \"\u4e0d\u4e00\u81f4\") . \")\\n\";\n        \n        if ($result === 1 &amp;&amp; isset($test['capture'])) {\n            echo \"    \u30ad\u30e3\u30d7\u30c1\u30e3: \";\n            print_r(array_slice($matches, 1));\n            echo \"\\n\";\n        }\n    }\n    echo \"\\n\";\n}\n\n\/\/ \u4f8b\uff1a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u3067\u30c7\u30d0\u30c3\u30b0\n$test_cases = [\n    ['input' =&gt; 'user', 'expected' =&gt; false],\n    ['input' =&gt; 'user@example', 'expected' =&gt; false],\n    ['input' =&gt; 'user@example.com', 'expected' =&gt; true, 'capture' =&gt; true],\n    ['input' =&gt; 'user.name+tag@example.co.jp', 'expected' =&gt; true, 'capture' =&gt; true],\n    ['input' =&gt; 'invalid@address', 'expected' =&gt; false],\n];\n\n\/\/ \u30b9\u30c6\u30c3\u30d71: \u30ed\u30fc\u30ab\u30eb\u90e8\u5206\u306e\u307f\ntest_pattern(\n    '\/^([a-zA-Z0-9._%+-]+)$\/',\n    $test_cases,\n    \"\u30b9\u30c6\u30c3\u30d71: \u30ed\u30fc\u30ab\u30eb\u90e8\u5206\u306e\u307f\"\n);\n\n\/\/ \u30b9\u30c6\u30c3\u30d72: @\u8a18\u53f7\u3068\u30c9\u30e1\u30a4\u30f3\u90e8\u5206\u3092\u8ffd\u52a0\ntest_pattern(\n    '\/^([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)$\/',\n    $test_cases,\n    \"\u30b9\u30c6\u30c3\u30d72: @\u8a18\u53f7\u3068\u30c9\u30e1\u30a4\u30f3\u90e8\u5206\u3092\u8ffd\u52a0\"\n);\n\n\/\/ \u30b9\u30c6\u30c3\u30d73: \u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30c9\u30e1\u30a4\u30f3\u3092\u8ffd\u52a0\ntest_pattern(\n    '\/^([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)\\.([a-zA-Z]{2,})$\/',\n    $test_cases,\n    \"\u30b9\u30c6\u30c3\u30d73: \u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u30c9\u30e1\u30a4\u30f3\u3092\u8ffd\u52a0\"\n);\n\n\/\/ \u5b8c\u6210\u3057\u305f\u30d1\u30bf\u30fc\u30f3\ntest_pattern(\n    '\/^([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})$\/',\n    $test_cases,\n    \"\u5b8c\u6210\u3057\u305f\u30d1\u30bf\u30fc\u30f3\"\n);\n<\/pre>\n\n\n\n<p>\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u3067\u306f\u3001\u5404\u30b9\u30c6\u30c3\u30d7\u3067\u6b63\u898f\u8868\u73fe\u306e\u4e00\u90e8\u306b\u7126\u70b9\u3092\u5f53\u3066\u3001\u305d\u306e\u90e8\u5206\u304c\u6b63\u3057\u304f\u6a5f\u80fd\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u6b21\u306b\u9032\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-124\">\u30c8\u30c3\u30d7\u30c0\u30a6\u30f3\u30fb\u30a2\u30d7\u30ed\u30fc\u30c1\uff1a\u554f\u984c\u306e\u7b87\u6240\u3092\u5207\u308a\u5206\u3051\u308b<\/h4>\n\n\n\n<p>\u3059\u3067\u306b\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u304c\u3042\u308a\u3001\u305d\u308c\u304c\u671f\u5f85\u901a\u308a\u306b\u52d5\u4f5c\u3057\u306a\u3044\u5834\u5408\u306f\u3001\u30d1\u30bf\u30fc\u30f3\u306e\u4e00\u90e8\u3092\u4e00\u6642\u7684\u306b\u30b7\u30f3\u30d7\u30eb\u306a\u8868\u73fe\u306b\u7f6e\u304d\u63db\u3048\u3066\u3001\u554f\u984c\u304c\u3042\u308b\u7b87\u6240\u3092\u7279\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u554f\u984c\u306e\u3042\u308b\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\n$complex_pattern = '\/^((?:[a-z0-9!#$%&amp;\\'*+\\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&amp;\\'*+\\\/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\"))@((?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\]))$\/';\n\n\/\/ \u30b9\u30c6\u30c3\u30d71: \u30ed\u30fc\u30ab\u30eb\u90e8\u5206\u3092\u5358\u7d14\u5316\n$simplified_1 = '\/^(.+)@((?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\]))$\/';\n\n\/\/ \u30b9\u30c6\u30c3\u30d72: \u30c9\u30e1\u30a4\u30f3\u90e8\u5206\u3082\u5358\u7d14\u5316\n$simplified_2 = '\/^(.+)@(.+)$\/';\n\n\/\/ \u5404\u30d1\u30bf\u30fc\u30f3\u3092\u30c6\u30b9\u30c8\ntest_pattern($complex_pattern, $test_cases, \"\u5143\u306e\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\");\ntest_pattern($simplified_1, $test_cases, \"\u30ed\u30fc\u30ab\u30eb\u90e8\u5206\u3092\u5358\u7d14\u5316\");\ntest_pattern($simplified_2, $test_cases, \"\u5b8c\u5168\u306b\u5358\u7d14\u5316\");\n<\/pre>\n\n\n\n<p>\u5358\u7d14\u5316\u3057\u305f\u30d1\u30bf\u30fc\u30f3\u304c\u671f\u5f85\u901a\u308a\u306b\u52d5\u4f5c\u3059\u308b\u7b87\u6240\u3092\u7279\u5b9a\u3067\u304d\u305f\u3089\u3001\u554f\u984c\u306e\u3042\u308b\u90e8\u5206\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3055\u3089\u306b\u8abf\u67fb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-125\">\u8996\u899a\u7684\u30c7\u30d0\u30c3\u30b0\u306e\u6d3b\u7528<\/h4>\n\n\n\n<p>\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u3092\u7406\u89e3\u3059\u308b\u306b\u306f\u3001\u8996\u899a\u7684\u306a\u30c4\u30fc\u30eb\u304c\u975e\u5e38\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u7279\u306b\u30a6\u30a7\u30d6\u30d9\u30fc\u30b9\u306e\u30c4\u30fc\u30eb\u306f\u5373\u5ea7\u306b\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u5f97\u3089\u308c\u308b\u70b9\u3067\u512a\u308c\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>regex101.com<\/strong>: \u6b63\u898f\u8868\u73fe\u306e\u30de\u30c3\u30c1\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9\u3092\u8996\u899a\u7684\u306b\u78ba\u8a8d\u3067\u304d\u307e\u3059<\/li>\n\n\n\n<li><strong>regexper.com<\/strong>: \u6b63\u898f\u8868\u73fe\u306e\u69cb\u9020\u3092\u56f3\u3067\u8868\u793a\u3057\u307e\u3059<\/li>\n\n\n\n<li><strong>debuggex.com<\/strong>: \u30d1\u30bf\u30fc\u30f3\u306e\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u8996\u899a\u7684\u306b\u30b9\u30c6\u30c3\u30d7\u5b9f\u884c\u3067\u304d\u307e\u3059<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u6b63\u898f\u8868\u73fe\u304c\u3069\u306e\u3088\u3046\u306b\u89e3\u91c8\u3055\u308c\u3001\u3069\u306e\u90e8\u5206\u304c\u3069\u306e\u3088\u3046\u306b\u30de\u30c3\u30c1\u3059\u308b\u304b\u3092\u8996\u899a\u7684\u306b\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-126\">\u30b3\u30fc\u30c9\u3067\u306e\u6bb5\u968e\u7684\u306a\u30c6\u30b9\u30c8\u4f8b<\/h4>\n\n\n\n<p>\u5b9f\u969b\u306e\u30b3\u30fc\u30c9\u3067\u6bb5\u968e\u7684\u306a\u30c6\u30b9\u30c8\u3092\u5b9f\u88c5\u3059\u308b\u4f8b\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u8907\u96d1\u306aURL\u30d1\u30bf\u30fc\u30f3\u306e\u30c7\u30d0\u30c3\u30b0\n$url_pattern = '\/^(https?:\\\/\\\/)?(www\\.)?([a-zA-Z0-9][-a-zA-Z0-9]{0,62}\\.)+([a-zA-Z]{2,})(:\\d+)?(\\\/[-a-zA-Z0-9%_.~#?&amp;=]*)?$\/';\n\n$url_tests = [\n    ['input' =&gt; 'https:\/\/www.example.com', 'expected' =&gt; true],\n    ['input' =&gt; 'http:\/\/sub.domain.example.co.jp\/path?query=value', 'expected' =&gt; true],\n    ['input' =&gt; 'example.com', 'expected' =&gt; true],\n    ['input' =&gt; 'https:\/\/invalid domain.com', 'expected' =&gt; false],\n    ['input' =&gt; 'http:\/\/1.2.3.4', 'expected' =&gt; false], \/\/ IP\u30a2\u30c9\u30ec\u30b9\u306f\u60f3\u5b9a\u5916\n];\n\n\/\/ \u5404\u90e8\u5206\u3054\u3068\u306b\u30c6\u30b9\u30c8\n$pattern_parts = [\n    '\u30d7\u30ed\u30c8\u30b3\u30eb' =&gt; '\/^(https?:\\\/\\\/)\/',\n    'www\u90e8\u5206' =&gt; '\/(www\\.)\/',\n    '\u30c9\u30e1\u30a4\u30f3' =&gt; '\/([a-zA-Z0-9][-a-zA-Z0-9]{0,62}\\.)+([a-zA-Z]{2,})\/',\n    '\u30dd\u30fc\u30c8' =&gt; '\/(:\\d+)?\/',\n    '\u30d1\u30b9\uff06\u30af\u30a8\u30ea' =&gt; '\/(\\\/[-a-zA-Z0-9%_.~#?&amp;=]*)?$\/'\n];\n\nforeach ($url_tests as $test) {\n    echo \"\u30c6\u30b9\u30c8\u5bfe\u8c61URL: {$test['input']}\\n\";\n    \n    foreach ($pattern_parts as $name =&gt; $part_pattern) {\n        $result = preg_match($part_pattern, $test['input'], $matches);\n        echo \"  \u90e8\u5206\u30d1\u30bf\u30fc\u30f3\u300c{$name}\u300d: \" . ($result ? \"\u4e00\u81f4\" : \"\u4e0d\u4e00\u81f4\");\n        if ($result) {\n            echo \" - \u30de\u30c3\u30c1: \" . $matches[0];\n        }\n        echo \"\\n\";\n    }\n    \n    $full_result = preg_match($url_pattern, $test['input']);\n    echo \"  \u5b8c\u5168\u30d1\u30bf\u30fc\u30f3: \" . ($full_result ? \"\u4e00\u81f4\" : \"\u4e0d\u4e00\u81f4\") . \n         \" (\u671f\u5f85\u5024: \" . ($test['expected'] ? \"\u4e00\u81f4\" : \"\u4e0d\u4e00\u81f4\") . \")\\n\\n\";\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-127\">\u307e\u3068\u3081\uff1a\u52b9\u679c\u7684\u306a\u30c7\u30d0\u30c3\u30b0\u306e\u305f\u3081\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5c0f\u3055\u304f\u59cb\u3081\u308b<\/strong>: \u6700\u521d\u306f\u6700\u3082\u5358\u7d14\u306a\u5f62\u304b\u3089\u59cb\u3081\u3001\u5f90\u3005\u306b\u8907\u96d1\u306b\u3059\u308b<\/li>\n\n\n\n<li><strong>\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3092\u7528\u610f<\/strong>: \u591a\u69d8\u306a\u5165\u529b\u3068\u671f\u5f85\u3055\u308c\u308b\u7d50\u679c\u3092\u4e8b\u524d\u306b\u6e96\u5099\u3059\u308b<\/li>\n\n\n\n<li><strong>\u8996\u899a\u5316\u3092\u6d3b\u7528<\/strong>: \u56f3\u8868\u793a\u3084\u30b9\u30c6\u30c3\u30d7\u5b9f\u884c\u3067\u7406\u89e3\u3092\u6df1\u3081\u308b<\/li>\n\n\n\n<li><strong>\u30d1\u30fc\u30c4\u306b\u5206\u3051\u308b<\/strong>: \u5404\u90e8\u5206\u304c\u6b63\u3057\u304f\u6a5f\u80fd\u3059\u308b\u304b\u500b\u5225\u306b\u30c6\u30b9\u30c8\u3059\u308b<\/li>\n\n\n\n<li><strong>\u4fee\u6b63\u3057\u305f\u5f8c\u306f\u5168\u4f53\u3092\u30c6\u30b9\u30c8<\/strong>: \u4e00\u90e8\u306e\u4fee\u6b63\u304c\u4ed6\u306e\u90e8\u5206\u306b\u4e0e\u3048\u308b\u5f71\u97ff\u3092\u78ba\u8a8d\u3059\u308b<\/li>\n\n\n\n<li><strong>\u30b3\u30e1\u30f3\u30c8\u3092\u6d3b\u7528<\/strong>: \u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u306e\u5404\u90e8\u5206\u306b\u30b3\u30e1\u30f3\u30c8\u3092\u4ed8\u3051\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u4ee5\u4e0a\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u3069\u3093\u306a\u306b\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u3082\u52b9\u7387\u7684\u306b\u30c7\u30d0\u30c3\u30b0\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u6b63\u898f\u8868\u73fe\u306e\u30c7\u30d0\u30c3\u30b0\u306f\u5fcd\u8010\u304c\u5fc5\u8981\u3067\u3059\u304c\u3001\u4f53\u7cfb\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u53d6\u308c\u3070\u3001\u5fc5\u305a\u554f\u984c\u3092\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-128\">PHP preg_match\u306b\u95a2\u3059\u308b\u3088\u304f\u3042\u308b\u8cea\u554f<\/h2>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u3068PHP\u306e<code>preg_match<\/code>\u95a2\u6570\u3092\u4f7f\u3046\u969b\u306b\u3001\u591a\u304f\u306e\u958b\u767a\u8005\u304c\u540c\u69d8\u306e\u7591\u554f\u3084\u8ab2\u984c\u306b\u76f4\u9762\u3057\u307e\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u6700\u3082\u3088\u304f\u5bc4\u305b\u3089\u308c\u308b\u8cea\u554f\u3068\u305d\u306e\u56de\u7b54\u3092\u307e\u3068\u3081\u307e\u3057\u305f\u3002\u521d\u5fc3\u8005\u304b\u3089\u4e0a\u7d1a\u8005\u307e\u3067\u3001<code>preg_match<\/code>\u306e\u7406\u89e3\u3092\u6df1\u3081\u308b\u306e\u306b\u5f79\u7acb\u3064\u60c5\u5831\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-129\">preg_match\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306fstrpos\u3068\u6bd4\u3079\u3066\u3069\u3046\u306a\u306e\u304b\uff1f<\/h3>\n\n\n\n<p><code>preg_match<\/code>\u3068<code>strpos<\/code>\u306f\u7570\u306a\u308b\u7528\u9014\u306b\u6700\u9069\u5316\u3055\u308c\u305f\u95a2\u6570\u3067\u3059\u3002\u4e00\u822c\u7684\u306b\u3001\u5358\u7d14\u306a\u6587\u5b57\u5217\u691c\u7d22\u3067\u306f<code>strpos<\/code>\u306e\u65b9\u304c\u9ad8\u901f\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6bd4\u8f03\n$subject = str_repeat(\"Lorem ipsum dolor sit amet. \", 1000);\n$needle = \"dolor\";\n$pattern = \"\/dolor\/\";\n\n$start = microtime(true);\nstrpos($subject, $needle);\n$strpos_time = microtime(true) - $start;\n\n$start = microtime(true);\npreg_match($pattern, $subject);\n$preg_time = microtime(true) - $start;\n\necho \"strpos: {$strpos_time} \u79d2\\n\";\necho \"preg_match: {$preg_time} \u79d2\\n\";\necho \"preg_match \u306f strpos \u306e\u7d04 \" . round($preg_time \/ $strpos_time) . \" \u500d\u306e\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\\n\";\n<\/pre>\n\n\n\n<p>\u591a\u304f\u306e\u74b0\u5883\u3067\u3001<code>preg_match<\/code>\u306f<code>strpos<\/code>\u306e\u6570\u500d\u304b\u3089\u6570\u5341\u500d\u306e\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u6b63\u898f\u8868\u73fe\u30a8\u30f3\u30b8\u30f3\u304c\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u884c\u3046\u305f\u3081\u306b\u5185\u90e8\u7684\u306b\u591a\u304f\u306e\u51e6\u7406\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>\u4f7f\u3044\u5206\u3051\u306e\u57fa\u6e96<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5358\u7d14\u306a\u6587\u5b57\u5217\u691c\u7d22\u306b\u306f<code>strpos<\/code>\/<code>stripos<\/code>\u3092\u4f7f\u7528\u3059\u308b<\/li>\n\n\n\n<li>\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\uff08\u4f8b\uff1a\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u691c\u8a3c\uff09\u306b\u306f<code>preg_match<\/code>\u3092\u4f7f\u7528\u3059\u308b<\/li>\n\n\n\n<li>\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3057\u306a\u3044\u691c\u7d22\u306b\u306f<code>stripos<\/code>\u307e\u305f\u306f<code>preg_match<\/code>\u306e<code>i<\/code>\u4fee\u98fe\u5b50\u3092\u4f7f\u7528\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-130\">\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u3067preg_match\u3092\u4f7f\u3046\u969b\u306e\u6ce8\u610f\u70b9\u306f\uff1f<\/h3>\n\n\n\n<p>\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b\u969b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u70b9\u306b\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u884c\u306e\u5883\u754c<\/strong>: \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001<code>^<\/code>\u3068<code>\u306f\u30c6\u30ad\u30b9\u30c8\u5168\u4f53\u306e\u5148\u982d\u3068\u672b\u5c3e\u306b\u30de\u30c3\u30c1\u3057\u307e\u3059\u3002\u5404\u884c\u306e\u5148\u982d\u3068\u672b\u5c3e\u306b\u30de\u30c3\u30c1\u3055\u305b\u308b\u306b\u306f\u3001<\/code>m`\u4fee\u98fe\u5b50\uff08\u30de\u30eb\u30c1\u30e9\u30a4\u30f3\u30e2\u30fc\u30c9\uff09\u3092\u4f7f\u7528\u3057\u307e\u3059\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$multiline_text = \"Line 1\\nLine 2\\nLine 3\";\n\n\/\/ \u5404\u884c\u306e\u5148\u982d\u306b\"Line\"\u304c\u3042\u308b\u884c\u3092\u691c\u51fa\npreg_match_all('\/^Line\/m', $multiline_text, $matches);\nprint_r($matches[0]); \/\/ \u3059\u3079\u3066\u306e\u884c\u3067\u30de\u30c3\u30c1\n\n\/\/ m\u4fee\u98fe\u5b50\u306a\u3057\u3067\u306f\u3001\u30c6\u30ad\u30b9\u30c8\u5168\u4f53\u306e\u5148\u982d\u306e\u307f\u30de\u30c3\u30c1\npreg_match_all('\/^Line\/', $multiline_text, $matches);\nprint_r($matches[0]); \/\/ \u6700\u521d\u306e\u884c\u306e\u307f\u30de\u30c3\u30c1\n<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30c9\u30c3\u30c8\u6f14\u7b97\u5b50\u3068\u6539\u884c<\/strong>: \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001<code>.<\/code>\uff08\u30c9\u30c3\u30c8\uff09\u306f\u6539\u884c\u6587\u5b57\u3092\u9664\u304f\u3059\u3079\u3066\u306e\u6587\u5b57\u306b\u30de\u30c3\u30c1\u3057\u307e\u3059\u3002\u6539\u884c\u3082\u542b\u3081\u308b\u306b\u306f\u3001<code>s<\/code>\u4fee\u98fe\u5b50\uff08\u30c9\u30c3\u30c8\u30aa\u30fc\u30eb\uff09\u3092\u4f7f\u7528\u3057\u307e\u3059\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"Start\\nMiddle\\nEnd\";\n\n\/\/ \u6a19\u6e96\u306e\u30c9\u30c3\u30c8\uff08\u6539\u884c\u306b\u306f\u30de\u30c3\u30c1\u3057\u306a\u3044\uff09\npreg_match('\/Start.*End\/', $text, $matches);\nprint_r($matches); \/\/ \u30de\u30c3\u30c1\u3057\u306a\u3044\n\n\/\/ s\u4fee\u98fe\u5b50\u4ed8\u304d\u306e\u30c9\u30c3\u30c8\uff08\u6539\u884c\u306b\u3082\u30de\u30c3\u30c1\u3059\u308b\uff09\npreg_match('\/Start.*End\/s', $text, $matches);\nprint_r($matches); \/\/ \"Start\\nMiddle\\nEnd\"\u306b\u30de\u30c3\u30c1\n<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u8907\u6570\u306e\u4fee\u98fe\u5b50\u306e\u7d44\u307f\u5408\u308f\u305b<\/strong>: \u8907\u6570\u884c\u51e6\u7406\u3067\u306f\u3001<code>m<\/code>\u3068<code>s<\/code>\u306e\u4e21\u65b9\u306e\u4fee\u98fe\u5b50\u304c\u5fc5\u8981\u306b\u306a\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ m\u3068s\u306e\u4e21\u65b9\u306e\u4fee\u98fe\u5b50\u3092\u4f7f\u7528\npreg_match_all('\/^.{5}$\/ms', $multiline_text, $matches);\n\/\/ \u9577\u30555\u6587\u5b57\u306e\u5404\u884c\u306b\u30de\u30c3\u30c1\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-131\">\u6b63\u898f\u8868\u73fe\u306e\u5b66\u7fd2\u306b\u304a\u3059\u3059\u3081\u306e\u30ea\u30bd\u30fc\u30b9\u306f\uff1f<\/h3>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u306e\u7406\u89e3\u3068\u7fd2\u5f97\u306b\u5f79\u7acb\u3064\u30ea\u30bd\u30fc\u30b9\u306f\u6570\u591a\u304f\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30aa\u30f3\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3068\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9<\/strong>:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/regex101.com\/\">regex101.com<\/a> \u2013 \u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a\u6b63\u898f\u8868\u73fe\u30c6\u30b9\u30bf\u30fc\uff08PCRE\u306b\u5bfe\u5fdc\uff09<\/li>\n\n\n\n<li><a href=\"https:\/\/regexr.com\/\">regexr.com<\/a> \u2013 \u30d1\u30bf\u30fc\u30f3\u306e\u4f5c\u6210\u3068\u30c6\u30b9\u30c8<\/li>\n\n\n\n<li><a href=\"https:\/\/www.regular-expressions.info\/\">regular-expressions.info<\/a> \u2013 \u8a73\u7d30\u306a\u8aac\u660e\u3068\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u66f8\u7c4d<\/strong>:\n<ul class=\"wp-block-list\">\n<li>\u300c\u6b63\u898f\u8868\u73fe\u30af\u30c3\u30af\u30d6\u30c3\u30af\u300d\uff08O\u2019Reilly\uff09<\/li>\n\n\n\n<li>\u300c\u8a73\u8aac \u6b63\u898f\u8868\u73fe\u300d\uff08\u30aa\u30e9\u30a4\u30ea\u30fc\u30fb\u30b8\u30e3\u30d1\u30f3\uff09<\/li>\n\n\n\n<li>\u300c\u5b9f\u8df5 \u6b63\u898f\u8868\u73fe\u300d\uff08\u6280\u8853\u8a55\u8ad6\u793e\uff09<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>PHP\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/strong>:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.php.net\/manual\/ja\/ref.pcre.php\">PHP\u516c\u5f0f\u30de\u30cb\u30e5\u30a2\u30eb \u2013 PCRE\u95a2\u6570<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.php.net\/manual\/ja\/pcre.pattern.php\">PCRE\u30d1\u30bf\u30fc\u30f3\u69cb\u6587<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u7df4\u7fd2\u30c4\u30fc\u30eb<\/strong>:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/regexone.com\/\">RegexOne<\/a> \u2013 \u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a\u7df4\u7fd2\u554f\u984c<\/li>\n\n\n\n<li><a href=\"https:\/\/regexcrossword.com\/\">RegexCrossword<\/a> \u2013 \u30d1\u30ba\u30eb\u5f62\u5f0f\u3067\u6b63\u898f\u8868\u73fe\u3092\u5b66\u3076<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>\u521d\u5fc3\u8005\u306f\u3001\u307e\u305a\u57fa\u672c\u6982\u5ff5\uff08\u6587\u5b57\u30af\u30e9\u30b9\u3001\u91cf\u6307\u5b9a\u5b50\u3001\u30a2\u30f3\u30ab\u30fc\u306a\u3069\uff09\u3092\u7406\u89e3\u3057\u3066\u304b\u3089\u3001\u3088\u308a\u9ad8\u5ea6\u306a\u6a5f\u80fd\uff08\u5148\u8aad\u307f\u3001\u5f8c\u8aad\u307f\u3001\u30a2\u30c8\u30df\u30c3\u30af\u30b0\u30eb\u30fc\u30d7\u306a\u3069\uff09\u306b\u9032\u3080\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u6700\u3082\u52b9\u679c\u7684\u306a\u5b66\u7fd2\u65b9\u6cd5\u306f\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u6b63\u898f\u8868\u73fe\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u5c0f\u3055\u306a\u554f\u984c\u304b\u3089\u59cb\u3081\u3066\u3001\u5f90\u3005\u306b\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u306b\u6311\u6226\u3057\u3066\u3044\u304f\u3068\u3088\u3044\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-132\">\u6b63\u898f\u8868\u73fe\u306e\u30c6\u30b9\u30c8\u624b\u6cd5<\/h2>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u3092\u4f5c\u6210\u3059\u308b\u969b\u306f\u3001\u5e38\u306b\u69d8\u3005\u306a\u30b1\u30fc\u30b9\u3067\u30c6\u30b9\u30c8\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6b63\u5e38\u30b1\u30fc\u30b9<\/strong> \u2013 \u671f\u5f85\u901a\u308a\u306b\u30de\u30c3\u30c1\u3059\u3079\u304d\u5165\u529b<\/li>\n\n\n\n<li><strong>\u30a8\u30c3\u30b8\u30b1\u30fc\u30b9<\/strong> \u2013 \u5883\u754c\u5024\u3084\u7279\u6b8a\u306a\u30b1\u30fc\u30b9<\/li>\n\n\n\n<li><strong>\u7570\u5e38\u30b1\u30fc\u30b9<\/strong> \u2013 \u30de\u30c3\u30c1\u3057\u306a\u3044\u3079\u304d\u5165\u529b<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u96fb\u8a71\u756a\u53f7\u306e\u6b63\u898f\u8868\u73fe\u30c6\u30b9\u30c8\u4f8b\n$pattern = '\/^0\\d{1,4}-\\d{1,4}-\\d{4}$\/';\n\n$test_cases = [\n    \/\/ \u6b63\u5e38\u30b1\u30fc\u30b9\n    '03-1234-5678' =&gt; true,\n    '090-1234-5678' =&gt; true,\n    '0467-84-1234' =&gt; true,\n    \n    \/\/ \u30a8\u30c3\u30b8\u30b1\u30fc\u30b9\n    '0-1-2345' =&gt; true,\n    '0123-123-4567' =&gt; false, \/\/ \u6841\u304c\u591a\u3059\u304e\u308b\n    \n    \/\/ \u7570\u5e38\u30b1\u30fc\u30b9\n    '03.1234.5678' =&gt; false,\n    'abc-defg-hijk' =&gt; false,\n    '03-1234-567' =&gt; false,\n];\n\nforeach ($test_cases as $input =&gt; $expected) {\n    $result = preg_match($pattern, $input) === 1;\n    \n    echo $input . ': ' . \n         ($result === $expected ? '\u2713' : '\u2717') . \n         ' (\u671f\u5f85: ' . ($expected ? '\u4e00\u81f4' : '\u4e0d\u4e00\u81f4') . \n         ', \u7d50\u679c: ' . ($result ? '\u4e00\u81f4' : '\u4e0d\u4e00\u81f4') . ')' . \"\\n\";\n}\n<\/pre>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u306e\u5b66\u7fd2\u3067\u306f\u5b9f\u8df5\u304c\u91cd\u8981\u3067\u3059\u3002\u5b9f\u969b\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u6b63\u898f\u8868\u73fe\u3092\u4f7f\u7528\u3057\u3001\u305d\u306e\u7d50\u679c\u3092\u5206\u6790\u3059\u308b\u3053\u3068\u3067\u3001\u7406\u89e3\u304c\u6df1\u307e\u308a\u307e\u3059\u3002\u6b63\u898f\u8868\u73fe\u306f\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3067\u3059\u304c\u3001\u904e\u5ea6\u306b\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u306f\u53ef\u8aad\u6027\u3068\u4fdd\u5b88\u6027\u306e\u554f\u984c\u3092\u5f15\u304d\u8d77\u3053\u3059\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u9069\u5207\u306a\u30d0\u30e9\u30f3\u30b9\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-133\">preg_match\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306fstrpos\u3068\u6bd4\u3079\u3066\u3069\u3046\u306a\u306e\u304b\uff1f<\/h3>\n\n\n\n<p><code>preg_match<\/code>\u3068<code>strpos<\/code>\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5dee\u306f\u3001\u591a\u304f\u306e\u958b\u767a\u8005\u304c\u76f4\u9762\u3059\u308b\u5b9f\u7528\u7684\u306a\u554f\u984c\u3067\u3059\u3002\u7d50\u8ad6\u304b\u3089\u8a00\u3048\u3070\u3001\u5358\u7d14\u306a\u6587\u5b57\u5217\u691c\u7d22\u3067\u306f<code>strpos<\/code>\u304c\u5727\u5012\u7684\u306b\u9ad8\u901f\u3067\u3059\u3002\u305d\u306e\u7406\u7531\u3068\u9069\u5207\u306a\u4f7f\u3044\u5206\u3051\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-134\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6bd4\u8f03<\/h4>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u30d9\u30f3\u30c1\u30de\u30fc\u30af\u30b3\u30fc\u30c9\u3067\u306f\u3001\u540c\u3058\u64cd\u4f5c\u3092\u4e21\u65b9\u306e\u95a2\u6570\u3067\u5b9f\u884c\u3057\u3001\u51e6\u7406\u6642\u9593\u3092\u6bd4\u8f03\u3057\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5927\u304d\u306a\u30c6\u30ad\u30b9\u30c8\u3092\u4f5c\u6210\n$haystack = str_repeat(\"This is a sample text with some needle inside. \", 1000);\n$needle = \"needle\";\n$pattern = \"\/needle\/\";\n\n\/\/ strpos\u306e\u30d9\u30f3\u30c1\u30de\u30fc\u30af\n$start = microtime(true);\nfor ($i = 0; $i &lt; 1000; $i++) {\n    strpos($haystack, $needle);\n}\n$strpos_time = microtime(true) - $start;\n\n\/\/ preg_match\u306e\u30d9\u30f3\u30c1\u30de\u30fc\u30af\n$start = microtime(true);\nfor ($i = 0; $i &lt; 1000; $i++) {\n    preg_match($pattern, $haystack);\n}\n$preg_match_time = microtime(true) - $start;\n\necho \"strpos: \" . number_format($strpos_time, 6) . \" \u79d2\\n\";\necho \"preg_match: \" . number_format($preg_match_time, 6) . \" \u79d2\\n\";\necho \"\u6bd4\u7387: preg_match \u306f strpos \u306e\u7d04 \" . round($preg_match_time \/ $strpos_time) . \" \u500d\\n\";\n<\/pre>\n\n\n\n<p>\u591a\u304f\u306e\u74b0\u5883\u3067\u3001<code>preg_match<\/code>\u306f<code>strpos<\/code>\u306e10\u301c30\u500d\u306e\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-135\">\u306a\u305c\u3053\u308c\u307b\u3069\u5dee\u304c\u3042\u308b\u306e\u304b\uff1f<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5185\u90e8\u51e6\u7406\u306e\u8907\u96d1\u3055<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li><code>strpos<\/code>: \u5358\u7d14\u306a\u30e1\u30e2\u30ea\u6bd4\u8f03\u64cd\u4f5c<\/li>\n\n\n\n<li><code>preg_match<\/code>: \u6b63\u898f\u8868\u73fe\u30a8\u30f3\u30b8\u30f3\u306b\u3088\u308b\u30d1\u30bf\u30fc\u30f3\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u3001\u89e3\u6790\u3001\u30d0\u30c3\u30af\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u306a\u3069\u306e\u8907\u96d1\u306a\u51e6\u7406<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u4e00\u81f4\u5224\u5b9a\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li><code>strpos<\/code>: \u30dc\u30a4\u30e4\u30fc\u30fb\u30e0\u30fc\u30a2\u6cd5\u306a\u3069\u306e\u52b9\u7387\u7684\u306a\u6587\u5b57\u5217\u691c\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<\/li>\n\n\n\n<li><code>preg_match<\/code>: \u72b6\u614b\u9077\u79fb\u3092\u4f7f\u3063\u305f\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-136\">\u9069\u5207\u306a\u4f7f\u3044\u5206\u3051<\/h4>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u306b\u5f93\u3046\u3053\u3068\u3067\u3001\u6700\u9069\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u6a5f\u80fd\u6027\u306e\u30d0\u30e9\u30f3\u30b9\u3092\u9054\u6210\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong><code>strpos<\/code>\/<code>stripos<\/code>\u3092\u4f7f\u3046\u3079\u304d\u5834\u5408<\/strong>\uff1a<ul><li>\u5358\u7d14\u306a\u90e8\u5206\u6587\u5b57\u5217\u306e\u5b58\u5728\u78ba\u8a8d<\/li><li>\u7279\u5b9a\u306e\u6587\u5b57\u5217\u306e\u4f4d\u7f6e\u691c\u7d22<\/li><li>\u5927\u91cf\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u9ad8\u901f\u306b\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408<\/li><\/ul><code>\/\/ \u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u306e\u30c1\u30a7\u30c3\u30af function isImageFile($filename) { $extensions = ['.jpg', '.jpeg', '.png', '.gif']; $ext = strtolower(substr($filename, strrpos($filename, '.'))); return in_array($ext, $extensions); }<\/code><\/li>\n\n\n\n<li><strong><code>preg_match<\/code>\u3092\u4f7f\u3046\u3079\u304d\u5834\u5408<\/strong>\uff1a<ul><li>\u30d1\u30bf\u30fc\u30f3\u30d9\u30fc\u30b9\u306e\u691c\u7d22\uff08\u30c7\u30fc\u30bf\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u691c\u8a3c\u306a\u3069\uff09<\/li><li>\u8907\u96d1\u306a\u6761\u4ef6\u3092\u6301\u3064\u6587\u5b57\u5217\u306e\u691c\u7d22<\/li><li>\u4e00\u81f4\u90e8\u5206\u306e\u62bd\u51fa\u304c\u5fc5\u8981\u306a\u5834\u5408<\/li><\/ul><code>\/\/ \u6709\u52b9\u306a\u65e5\u4ed8\u5f62\u5f0f\u306e\u30c1\u30a7\u30c3\u30af function isValidDate($date) { return preg_match('\/^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$\/', $date) === 1; }<\/code><\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-137\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u30b3\u30c4<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4e8b\u524d\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0<\/strong>\uff1a\u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u3092\u9069\u7528\u3059\u308b\u524d\u306b\u3001<code>strpos<\/code>\u3067\u5019\u88dc\u3092\u7d5e\u308a\u8fbc\u3080 <code>\/\/ \u6539\u5584\u524d preg_match('\/complex pattern with needle inside\/', $text); \/\/ \u6539\u5584\u5f8c if (strpos($text, 'needle') !== false) { preg_match('\/complex pattern with needle inside\/', $text); }<\/code><\/li>\n\n\n\n<li><strong>\u30d1\u30bf\u30fc\u30f3\u3092\u518d\u5229\u7528<\/strong>\uff1a\u540c\u3058\u30d1\u30bf\u30fc\u30f3\u3092\u7e70\u308a\u8fd4\u3057\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u5909\u6570\u306b\u683c\u7d0d<\/li>\n\n\n\n<li><strong>\u5fc5\u8981\u6700\u5c0f\u9650\u306e\u6a5f\u80fd\u3092\u4f7f\u7528<\/strong>\uff1a\u5fc5\u8981\u306e\u306a\u3044\u4fee\u98fe\u5b50\u3084\u6a5f\u80fd\u306f\u907f\u3051\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u91cd\u8981\u306a\u5834\u9762\u3067\u306f\u3001\u53ef\u80fd\u306a\u9650\u308a<code>strpos<\/code>\u3092\u4f7f\u3044\u3001\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u304c\u5fc5\u8981\u306a\u5834\u5408\u306e\u307f<code>preg_match<\/code>\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u8ce2\u660e\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-138\">\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u3067preg_match\u3092\u4f7f\u3046\u969b\u306e\u6ce8\u610f\u70b9\u306f\uff1f<\/h3>\n\n\n\n<p>\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u3092\u6b63\u898f\u8868\u73fe\u3067\u51e6\u7406\u3059\u308b\u969b\u306b\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u91cd\u8981\u306a\u6ce8\u610f\u70b9\u304c\u3042\u308a\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u52d5\u4f5c\u3092\u7406\u89e3\u305b\u305a\u306b\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u3092\u51e6\u7406\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001\u4e88\u60f3\u5916\u306e\u7d50\u679c\u306b\u306a\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-139\">\u884c\u306e\u5883\u754c\u3068\u300cm\u300d\u4fee\u98fe\u5b50<\/h4>\n\n\n\n<p>\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u30ad\u30e3\u30ec\u30c3\u30c8\uff08<code>^<\/code>\uff09\u3068\u30c9\u30eb\u8a18\u53f7\uff08<code>$<\/code>\uff09\u306f\u30c6\u30ad\u30b9\u30c8\u5168\u4f53\u306e\u5148\u982d\u3068\u672b\u5c3e\u3060\u3051\u306b\u30de\u30c3\u30c1\u3057\u307e\u3059\u3002\u5404\u884c\u306e\u5148\u982d\u3068\u672b\u5c3e\u3092\u8a8d\u8b58\u3055\u305b\u308b\u306b\u306f\u3001\u300cm\u300d\u4fee\u98fe\u5b50\uff08\u30de\u30eb\u30c1\u30e9\u30a4\u30f3\u30e2\u30fc\u30c9\uff09\u304c\u5fc5\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"First line\\nSecond line\\nThird line\";\n\n\/\/ m\u4fee\u98fe\u5b50\u306a\u3057 - \u30c6\u30ad\u30b9\u30c8\u5168\u4f53\u306e\u5148\u982d\u3068\u672b\u5c3e\u306e\u307f\u30de\u30c3\u30c1\npreg_match_all('\/^.*$\/', $text, $matches);\nprint_r($matches[0]); \/\/ [\"First line\\nSecond line\\nThird line\"]\n\n\/\/ m\u4fee\u98fe\u5b50\u3042\u308a - \u5404\u884c\u306e\u5148\u982d\u3068\u672b\u5c3e\u306b\u30de\u30c3\u30c1\npreg_match_all('\/^.*$\/m', $text, $matches);\nprint_r($matches[0]); \/\/ [\"First line\", \"Second line\", \"Third line\"]\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-140\">\u30c9\u30c3\u30c8\uff08.\uff09\u3068\u300cs\u300d\u4fee\u98fe\u5b50<\/h4>\n\n\n\n<p>\u3082\u3046\u4e00\u3064\u306e\u91cd\u8981\u306a\u6ce8\u610f\u70b9\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u30c9\u30c3\u30c8\uff08<code>.<\/code>\uff09\u306f\u6539\u884c\u6587\u5b57\uff08<code>\\n<\/code>, <code>\\r<\/code>, <code>\\r\\n<\/code>\uff09\u306b\u30de\u30c3\u30c1\u3057\u306a\u3044\u3053\u3068\u3067\u3059\u3002\u6539\u884c\u6587\u5b57\u3082\u542b\u3081\u3066\u30de\u30c3\u30c1\u3055\u305b\u308b\u306b\u306f\u3001\u300cs\u300d\u4fee\u98fe\u5b50\uff08\u30c9\u30c3\u30c8\u30aa\u30fc\u30eb\uff09\u304c\u5fc5\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$html = \"&lt;div&gt;\\n  &lt;p&gt;Paragraph&lt;\/p&gt;\\n&lt;\/div&gt;\";\n\n\/\/ s\u4fee\u98fe\u5b50\u306a\u3057 - .\u306f\u6539\u884c\u306b\u30de\u30c3\u30c1\u3057\u306a\u3044\npreg_match('\/&lt;div&gt;.*&lt;\\\/div&gt;\/', $html, $matches);\nprint_r($matches); \/\/ \u7d50\u679c\u306a\u3057\n\n\/\/ s\u4fee\u98fe\u5b50\u3042\u308a - .\u306f\u6539\u884c\u306b\u3082\u30de\u30c3\u30c1\u3059\u308b\npreg_match('\/&lt;div&gt;.*&lt;\\\/div&gt;\/s', $html, $matches);\nprint_r($matches); \/\/ [\"&lt;div&gt;\\n  &lt;p&gt;Paragraph&lt;\/p&gt;\\n&lt;\/div&gt;\"]\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-141\">\u4fee\u98fe\u5b50\u306e\u7d44\u307f\u5408\u308f\u305b<\/h4>\n\n\n\n<p>\u8907\u96d1\u306a\u8907\u6570\u884c\u51e6\u7406\u3067\u306f\u3001\u300cm\u300d\u3068\u300cs\u300d\u306e\u4e21\u65b9\u306e\u4fee\u98fe\u5b50\u304c\u5fc5\u8981\u306b\u306a\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"# Section 1\\nContent 1\\n\\n# Section 2\\nContent 2\";\n\n\/\/ Markdown\u306e\u898b\u51fa\u3057\u3068\u305d\u308c\u306b\u7d9a\u304f\u5185\u5bb9\u3092\u62bd\u51fa\npreg_match_all('\/^# (.*?)$(.*?)(?=^# |\\z)\/ms', $text, $matches, PREG_SET_ORDER);\n\nforeach ($matches as $match) {\n    echo \"\u898b\u51fa\u3057: \" . $match[1] . \"\\n\";\n    echo \"\u5185\u5bb9: \" . trim($match[2]) . \"\\n\\n\";\n}\n<\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>m<\/code> \u4fee\u98fe\u5b50\u306b\u3088\u308a\u3001<code>^<\/code>\u3068<code>$<\/code>\u304c\u5404\u884c\u306e\u5883\u754c\u306b\u30de\u30c3\u30c1\u3057\u307e\u3059<\/li>\n\n\n\n<li><code>s<\/code> \u4fee\u98fe\u5b50\u306b\u3088\u308a\u3001<code>.<\/code>\u304c\u6539\u884c\u306b\u3082\u30de\u30c3\u30c1\u3057\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-142\">\u975e\u8caa\u6b32\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u91cd\u8981\u6027<\/h4>\n\n\n\n<p>\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u3092\u6271\u3046\u969b\u306f\u3001\u975e\u8caa\u6b32\u30de\u30c3\u30c1\u30f3\u30b0\uff08<code>*?<\/code>\u3084<code>+?<\/code>\u306a\u3069\uff09\u304c\u7279\u306b\u91cd\u8981\u306b\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$html = \"&lt;div&gt;First div&lt;\/div&gt;\\n&lt;div&gt;Second div&lt;\/div&gt;\";\n\n\/\/ \u8caa\u6b32\u306a\u30de\u30c3\u30c1\u30f3\u30b0 - \u6700\u9577\u4e00\u81f4\npreg_match_all('\/&lt;div&gt;.*&lt;\\\/div&gt;\/', $html, $matches);\nprint_r($matches[0]); \/\/ [\"&lt;div&gt;First div&lt;\/div&gt;\\n&lt;div&gt;Second div&lt;\/div&gt;\"]\n\n\/\/ \u975e\u8caa\u6b32\u306a\u30de\u30c3\u30c1\u30f3\u30b0 - \u6700\u77ed\u4e00\u81f4\npreg_match_all('\/&lt;div&gt;.*?&lt;\\\/div&gt;\/', $html, $matches);\nprint_r($matches[0]); \/\/ [\"&lt;div&gt;First div&lt;\/div&gt;\", \"&lt;div&gt;Second div&lt;\/div&gt;\"]\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-143\">\u6539\u884c\u6587\u5b57\u306e\u9055\u3044\u306b\u5bfe\u5fdc\u3059\u308b<\/h4>\n\n\n\n<p>\u7570\u306a\u308b\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\uff08Windows\u3001Unix\u3001\u53e4\u3044Mac\uff09\u3067\u306f\u3001\u6539\u884c\u6587\u5b57\u304c\u7570\u306a\u308a\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u6539\u884c\u30d1\u30bf\u30fc\u30f3\u306b\u5bfe\u5fdc\u3059\u308b\u306b\u306f\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$text = \"Line1\\r\\nLine2\\rLine3\\nLine4\";\n\n\/\/ \u3059\u3079\u3066\u306e\u7a2e\u985e\u306e\u6539\u884c\u3092\u8003\u616e\u3057\u3066\u5206\u5272\n$lines = preg_split('\/\\r\\n|\\r|\\n\/', $text);\nprint_r($lines); \/\/ [\"Line1\", \"Line2\", \"Line3\", \"Line4\"]\n<\/pre>\n\n\n\n<p>\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b\u969b\u306f\u3001\u3053\u308c\u3089\u306e\u4fee\u98fe\u5b50\u3068\u7279\u6027\u3092\u7406\u89e3\u3057\u3001\u9069\u5207\u306b\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u6b63\u78ba\u3067\u52b9\u7387\u7684\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-144\">\u6b63\u898f\u8868\u73fe\u306e\u5b66\u7fd2\u306b\u304a\u3059\u3059\u3081\u306e\u30ea\u30bd\u30fc\u30b9\u306f\uff1f<\/h3>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u306f\u975e\u5e38\u306b\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3067\u3059\u304c\u3001\u7fd2\u5f97\u306b\u306f\u9069\u5207\u306a\u5b66\u7fd2\u30ea\u30bd\u30fc\u30b9\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u4ee5\u4e0b\u306b\u3001\u521d\u5fc3\u8005\u304b\u3089\u4e0a\u7d1a\u8005\u307e\u3067\u5f79\u7acb\u3064\u3055\u307e\u3056\u307e\u306a\u30ea\u30bd\u30fc\u30b9\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-145\">\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a\u30aa\u30f3\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb<\/h4>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u3092\u5b66\u3076\u6700\u3082\u52b9\u679c\u7684\u306a\u65b9\u6cd5\u306e\u4e00\u3064\u306f\u3001\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u30d1\u30bf\u30fc\u30f3\u3092\u30c6\u30b9\u30c8\u3067\u304d\u308b\u30c4\u30fc\u30eb\u3092\u4f7f\u3046\u3053\u3068\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/regex101.com\/\">regex101.com<\/a><\/strong>\n<ul class=\"wp-block-list\">\n<li>PCRE\u306b\u5b8c\u5168\u5bfe\u5fdc\u3057\u3001PHP\u306e\u6b63\u898f\u8868\u73fe\u3092\u30c6\u30b9\u30c8\u3059\u308b\u306e\u306b\u6700\u9069<\/li>\n\n\n\n<li>\u30d1\u30bf\u30fc\u30f3\u306e\u5404\u90e8\u5206\u306e\u8aac\u660e\u3001\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u30b9\u30c6\u30c3\u30d7\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5206\u6790\u306a\u3069\u306e\u8a73\u7d30\u306a\u60c5\u5831\u3092\u63d0\u4f9b<\/li>\n\n\n\n<li>\u6b63\u898f\u8868\u73fe\u306e\u5171\u6709\u3084\u4fdd\u5b58\u304c\u53ef\u80fd<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/regexr.com\/\">regexr.com<\/a><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u611f\u7684\u306a\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9<\/li>\n\n\n\n<li>\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\u3068\u30c1\u30fc\u30c8\u30b7\u30fc\u30c8\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u308b<\/li>\n\n\n\n<li>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306b\u3088\u308b\u30d1\u30bf\u30fc\u30f3\u5171\u6709\u30e9\u30a4\u30d6\u30e9\u30ea<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/debuggex.com\/\">debuggex.com<\/a><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u6b63\u898f\u8868\u73fe\u3092\u8996\u899a\u7684\u306a\u30b0\u30e9\u30d5\u3068\u3057\u3066\u8868\u793a<\/li>\n\n\n\n<li>\u30d1\u30bf\u30fc\u30f3\u306e\u6d41\u308c\u3092\u56f3\u89e3\u3057\u3066\u304f\u308c\u308b\u305f\u3081\u7406\u89e3\u3057\u3084\u3059\u3044<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/www.regexpal.com\/\">regexpal.com<\/a><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u975e\u5e38\u306b\u30b7\u30f3\u30d7\u30eb\u3067\u8efd\u91cf\u306a\u30c6\u30b9\u30bf\u30fc<\/li>\n\n\n\n<li>\u57fa\u672c\u7684\u306a\u30c6\u30b9\u30c8\u6a5f\u80fd\u306b\u7684\u3092\u7d5e\u3063\u3066\u3044\u308b<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-146\">\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a\u5b66\u7fd2\u30b5\u30a4\u30c8<\/h4>\n\n\n\n<p>\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u3067\u6b63\u898f\u8868\u73fe\u3092\u5b66\u3079\u308b\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a\u30b5\u30a4\u30c8\u3082\u591a\u6570\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/regexone.com\/\">RegexOne<\/a><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u521d\u5fc3\u8005\u5411\u3051\u306e\u6bb5\u968e\u7684\u306a\u30ec\u30c3\u30b9\u30f3<\/li>\n\n\n\n<li>\u5404\u30b9\u30c6\u30c3\u30d7\u3067\u8ab2\u984c\u3068\u89e3\u8aac\u304c\u63d0\u4f9b\u3055\u308c\u308b<\/li>\n\n\n\n<li>\u57fa\u672c\u6982\u5ff5\u304b\u3089\u5b9f\u7528\u7684\u306a\u30d1\u30bf\u30fc\u30f3\u307e\u3067\u30ab\u30d0\u30fc<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/regexlearn.com\/\">RegexLearn<\/a><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306a\u30ec\u30c3\u30b9\u30f3\u3068\u30c1\u30e3\u30ec\u30f3\u30b8<\/li>\n\n\n\n<li>\u30b3\u30fc\u30b9\u3054\u3068\u306b\u6574\u7406\u3055\u308c\u305f\u5b66\u7fd2\u30d1\u30b9<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/regexcrossword.com\/\">RegexCrossword<\/a><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30af\u30ed\u30b9\u30ef\u30fc\u30c9\u30d1\u30ba\u30eb\u5f62\u5f0f\u3067\u697d\u3057\u304f\u5b66\u3079\u308b<\/li>\n\n\n\n<li>\u5f90\u3005\u306b\u96e3\u6613\u5ea6\u304c\u4e0a\u304c\u308b\u69cb\u6210<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-147\">\u66f8\u7c4d\u3068\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9<\/h4>\n\n\n\n<p>\u3088\u308a\u4f53\u7cfb\u7684\u306b\u5b66\u3073\u305f\u3044\u65b9\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u66f8\u7c4d\u304c\u304a\u3059\u3059\u3081\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8a73\u8aac \u6b63\u898f\u8868\u73fe\uff08Jeffrey Friedl\u8457\uff09<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u6b63\u898f\u8868\u73fe\u306e\u6c7a\u5b9a\u7248\u3068\u3082\u8a00\u3048\u308b\u5305\u62ec\u7684\u306a\u66f8\u7c4d<\/li>\n\n\n\n<li>\u7406\u8ad6\u304b\u3089\u5b9f\u8df5\u307e\u3067\u8a73\u7d30\u306b\u89e3\u8aac<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u6b63\u898f\u8868\u73fe\u30af\u30c3\u30af\u30d6\u30c3\u30af\uff08Jan Goyvaerts\u3001Steven Levithan\u8457\uff09<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u5b9f\u7528\u7684\u306a\u30d1\u30bf\u30fc\u30f3\u306e\u30ec\u30b7\u30d4\u96c6<\/li>\n\n\n\n<li>\u5177\u4f53\u7684\u306a\u554f\u984c\u89e3\u6c7a\u306b\u5f79\u7acb\u3064<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>PHP\u516c\u5f0f\u30de\u30cb\u30e5\u30a2\u30eb \u2013 PCRE\u95a2\u6570<\/strong>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.php.net\/manual\/ja\/ref.pcre.php\">php.net\/manual\/ja\/ref.pcre.php<\/a><\/li>\n\n\n\n<li>PHP\u7279\u6709\u306e\u6b63\u898f\u8868\u73fe\u95a2\u6570\u306e\u8a73\u7d30\u306a\u89e3\u8aac<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-148\">PHP\u7279\u5316\u306e\u30ea\u30bd\u30fc\u30b9<\/h4>\n\n\n\n<p>PHP\u958b\u767a\u8005\u5411\u3051\u306e\u7279\u5316\u3057\u305f\u30ea\u30bd\u30fc\u30b9\u3082\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Laracast\u306e\u6b63\u898f\u8868\u73fe\u8b1b\u5ea7<\/strong>\n<ul class=\"wp-block-list\">\n<li>PHP\/Laravel\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u5b9f\u969b\u306e\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9<\/li>\n\n\n\n<li>\u8996\u899a\u7684\u3067\u5206\u304b\u308a\u3084\u3059\u3044\u8aac\u660e<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Symfony\u306ePCRE\u6d3b\u7528\u30ac\u30a4\u30c9<\/strong>\n<ul class=\"wp-block-list\">\n<li>Symfony\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u304a\u3051\u308b\u6b63\u898f\u8868\u73fe\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-149\">\u5b66\u7fd2\u306e\u9032\u3081\u65b9<\/h4>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u3092\u52b9\u679c\u7684\u306b\u5b66\u3076\u305f\u3081\u306e\u30a2\u30c9\u30d0\u30a4\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u57fa\u672c\u304b\u3089\u59cb\u3081\u308b<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u6587\u5b57\u30af\u30e9\u30b9\u3001\u91cf\u6307\u5b9a\u5b50\u3001\u30a2\u30f3\u30ab\u30fc\u306a\u3069\u306e\u57fa\u672c\u6982\u5ff5\u3092\u6700\u521d\u306b\u7406\u89e3<\/li>\n\n\n\n<li>\u5f90\u3005\u306b\u5148\u8aad\u307f\u3001\u5f8c\u8aad\u307f\u3001\u6761\u4ef6\u306a\u3069\u306e\u9ad8\u5ea6\u306a\u6a5f\u80fd\u3078\u9032\u3080<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u5b9f\u8df5\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u5b9f\u969b\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u6b63\u898f\u8868\u73fe\u3092\u4f7f\u7528\u3059\u308b<\/li>\n\n\n\n<li>\u81ea\u5206\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u95a2\u9023\u3059\u308b\u5177\u4f53\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3067\u7df4\u7fd2<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\u30ab\u30fc\u30c9\u306e\u4f5c\u6210<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u983b\u7e41\u306b\u4f7f\u3046\u30d1\u30bf\u30fc\u30f3\u3092\u8a18\u9332\u3057\u3066\u304a\u304f<\/li>\n\n\n\n<li>\u30b3\u30d4\u30fc\uff06\u30da\u30fc\u30b9\u30c8\u3060\u3051\u3067\u306a\u304f\u3001\u30d1\u30bf\u30fc\u30f3\u306e\u4ed5\u7d44\u307f\u3092\u7406\u89e3\u3059\u308b<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u6d3b\u7528<\/strong>\n<ul class=\"wp-block-list\">\n<li>Stack Overflow\u306a\u3069\u3067\u8cea\u554f\u3084\u56de\u7b54\u3092\u898b\u308b<\/li>\n\n\n\n<li>\u4ed6\u306e\u958b\u767a\u8005\u3068\u6b63\u898f\u8868\u73fe\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u5171\u6709\u3059\u308b<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u306f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u4e2d\u3067\u3082\u7279\u6b8a\u306a\u8a00\u8a9e\u306e\u3088\u3046\u306a\u9762\u304c\u3042\u308a\u3001\u7fd2\u5f97\u306b\u306f\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u304c\u3001\u4e0a\u8a18\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u6d3b\u7528\u3059\u308c\u3070\u3001\u52b9\u7387\u7684\u306b\u5b66\u7fd2\u3092\u9032\u3081\u3089\u308c\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-150\">\u307e\u3068\u3081\uff1aPHP preg_match\u3092\u30de\u30b9\u30bf\u30fc\u3059\u308b\u305f\u3081\u306e\u6b21\u306e\u30b9\u30c6\u30c3\u30d7<\/h2>\n\n\n\n<p>\u672c\u8a18\u4e8b\u3067\u306f\u3001PHP <code>preg_match<\/code>\u95a2\u6570\u306e\u57fa\u672c\u304b\u3089\u5fdc\u7528\u307e\u3067\u5e45\u5e83\u304f\u89e3\u8aac\u3057\u3066\u304d\u307e\u3057\u305f\u3002\u6b63\u898f\u8868\u73fe\u306f\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\u306e\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3067\u3042\u308a\u3001\u30d5\u30a9\u30fc\u30e0\u5165\u529b\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3001\u30c7\u30fc\u30bf\u62bd\u51fa\u3001URL\u51e6\u7406\u3001\u6587\u5b57\u5217\u7f6e\u63db\u306a\u3069\u3001\u69d8\u3005\u306a\u5834\u9762\u3067\u6d3b\u8e8d\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u305d\u306e\u771f\u4fa1\u3092\u767a\u63ee\u3059\u308b\u306b\u306f\u4f53\u7cfb\u7684\u306a\u5b66\u7fd2\u3068\u5b9f\u8df5\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-151\">\u30b9\u30ad\u30eb\u30ec\u30d9\u30eb\u5225\u306e\u6b21\u306e\u30b9\u30c6\u30c3\u30d7<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-152\">\u521d\u5fc3\u8005\u30ec\u30d9\u30eb<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u57fa\u672c\u30d1\u30bf\u30fc\u30f3\u306e\u7fd2\u5f97<\/strong>: \u6587\u5b57\u30af\u30e9\u30b9\uff08<code>\\d<\/code>, <code>\\w<\/code>, <code>[a-z]<\/code>\u306a\u3069\uff09\u3001\u91cf\u6307\u5b9a\u5b50\uff08<code>*<\/code>, <code>+<\/code>, <code>?<\/code>, <code>{n,m}<\/code>\uff09\u3001\u30a2\u30f3\u30ab\u30fc\uff08<code>^<\/code>, <code>$<\/code>\uff09\u3092\u4f7f\u3044\u3053\u306a\u305b\u308b\u3088\u3046\u306b\u3059\u308b<\/li>\n\n\n\n<li><strong>\u5c0f\u3055\u306a\u554f\u984c\u304b\u3089\u59cb\u3081\u308b<\/strong>: \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u691c\u8a3c\u3001\u96fb\u8a71\u756a\u53f7\u691c\u8a3c\u306a\u3069\u5177\u4f53\u7684\u306a\u30bf\u30b9\u30af\u3067\u7df4\u7fd2<\/li>\n\n\n\n<li><strong>\u30aa\u30f3\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u6d3b\u7528<\/strong>: regex101.com\u306a\u3069\u3092\u4f7f\u3063\u3066\u8996\u899a\u7684\u306b\u5b66\u3076<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u521d\u5fc3\u8005\u5411\u3051\uff1a\u57fa\u672c\u7684\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\nif (preg_match('\/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/', $email)) {\n    echo \"\u6709\u52b9\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u3059\";\n}\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-153\">\u4e2d\u7d1a\u8005\u30ec\u30d9\u30eb<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u9ad8\u5ea6\u306a\u30d1\u30bf\u30fc\u30f3\u306e\u7fd2\u5f97<\/strong>: \u5148\u8aad\u307f\u30fb\u5f8c\u8aad\u307f\u3001\u975e\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u3001\u540d\u524d\u4ed8\u304d\u30ad\u30e3\u30d7\u30c1\u30e3\u306a\u3069<\/li>\n\n\n\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/strong>: \u52b9\u7387\u7684\u306a\u30d1\u30bf\u30fc\u30f3\u8a2d\u8a08\u3001<code>strpos<\/code>\u3068\u306e\u4f75\u7528<\/li>\n\n\n\n<li><strong>\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5316<\/strong>: \u518d\u5229\u7528\u53ef\u80fd\u306a\u30d0\u30ea\u30c7\u30fc\u30bf\u30af\u30e9\u30b9\u306e\u4f5c\u6210<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u4e2d\u7d1a\u8005\u5411\u3051\uff1a\u540d\u524d\u4ed8\u304d\u30ad\u30e3\u30d7\u30c1\u30e3\u3092\u4f7f\u3063\u305f\u65e5\u6642\u62bd\u51fa\n$pattern = '\/(?&lt;year&gt;\\d{4})-(?&lt;month&gt;\\d{2})-(?&lt;day&gt;\\d{2}) (?&lt;hour&gt;\\d{2}):(?&lt;minute&gt;\\d{2})\/';\npreg_match($pattern, '2023-05-15 14:30', $matches);\necho \"\u5e74: {$matches['year']}, \u6708: {$matches['month']}, \u65e5: {$matches['day']}\";\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-154\">\u4e0a\u7d1a\u8005\u30ec\u30d9\u30eb<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u719f\u8003<\/strong>: ReDoS\u653b\u6483\u3078\u306e\u5bfe\u7b56\u3001\u30a8\u30e9\u30fc\u51e6\u7406\u306e\u5b8c\u5168\u5b9f\u88c5<\/li>\n\n\n\n<li><strong>\u56fd\u969b\u5316\u5bfe\u5fdc<\/strong>: UTF-8\u51e6\u7406\u3001\u591a\u8a00\u8a9e\u5bfe\u5fdc<\/li>\n\n\n\n<li><strong>\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u51e6\u7406<\/strong>: \u30e1\u30e2\u30ea\u52b9\u7387\u306e\u826f\u3044\u5b9f\u88c5\u3001\u30c1\u30e3\u30f3\u30af\u51e6\u7406<\/li>\n\n\n\n<li><strong>\u6b63\u898f\u8868\u73fe\u306e\u30c6\u30b9\u30c8\u81ea\u52d5\u5316<\/strong>: \u30e6\u30cb\u30c3\u30c8\u30c6\u30b9\u30c8\u3067\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u4e0a\u7d1a\u8005\u5411\u3051\uff1a\u5b89\u5168\u306a\u6b63\u898f\u8868\u73fe\u51e6\u7406\nclass SafeRegexProcessor {\n    private const EXECUTION_TIMEOUT = 0.5; \/\/ \u79d2\n    \n    public function match($pattern, $subject, &amp;$matches = null) {\n        $start_time = microtime(true);\n        $result = @preg_match($pattern, $subject, $matches);\n        \n        if (microtime(true) - $start_time &gt; self::EXECUTION_TIMEOUT) {\n            throw new RuntimeException(\"Regex execution timeout\");\n        }\n        \n        if ($result === false) {\n            $error = preg_last_error();\n            throw new RuntimeException(\"Regex error: \" . $this-&gt;getErrorMessage($error));\n        }\n        \n        return $result;\n    }\n    \n    private function getErrorMessage($error_code) {\n        \/\/ \u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u306e\u8a73\u7d30\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8fd4\u3059\n    }\n}\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-155\">\u52b9\u679c\u7684\u306a\u30de\u30b9\u30bf\u30fc\u3078\u306e\u9053\u7b4b<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d1\u30bf\u30fc\u30f3\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u69cb\u7bc9<\/strong>: \u983b\u7e41\u306b\u4f7f\u7528\u3059\u308b\u30d1\u30bf\u30fc\u30f3\u3092\u30b3\u30e1\u30f3\u30c8\u4ed8\u304d\u3067\u307e\u3068\u3081\u308b<\/li>\n\n\n\n<li><strong>\u30c6\u30b9\u30c8\u99c6\u52d5\u958b\u767a<\/strong>: \u5404\u6b63\u898f\u8868\u73fe\u306b\u5bfe\u3057\u3066\u8907\u6570\u306e\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3092\u7528\u610f<\/li>\n\n\n\n<li><strong>\u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc<\/strong>: \u30c1\u30fc\u30e0\u3067\u306e\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u306e\u30ec\u30d3\u30e5\u30fc\u3092\u7fd2\u6163\u5316<\/li>\n\n\n\n<li><strong>\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u9069\u7528<\/strong>: \u5b9f\u52d9\u3067\u7a4d\u6975\u7684\u306b\u6d3b\u7528\u3057\u3066\u7d4c\u9a13\u3092\u7a4d\u3080<\/li>\n\n\n\n<li><strong>\u7d99\u7d9a\u7684\u306a\u5b66\u7fd2<\/strong>: \u6700\u65b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3084PCRE\u306e\u66f4\u65b0\u3092\u30d5\u30a9\u30ed\u30fc<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-156\">\u5b9f\u8df5\u7684\u306a\u30a2\u30c9\u30d0\u30a4\u30b9<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u5358\u7d14\u3055\u3092\u91cd\u8996\u3059\u308b<\/strong>: \u8907\u96d1\u306a\u4e00\u3064\u306e\u30d1\u30bf\u30fc\u30f3\u3088\u308a\u3001\u30b7\u30f3\u30d7\u30eb\u306a\u8907\u6570\u306e\u30d1\u30bf\u30fc\u30f3\u306e\u7d44\u307f\u5408\u308f\u305b\u3092\u8003\u3048\u308b<\/li>\n\n\n\n<li><strong>\u30b3\u30e1\u30f3\u30c8\u3092\u6b8b\u3059<\/strong>: \u8907\u96d1\u306a\u6b63\u898f\u8868\u73fe\u306b\u306f\u5fc5\u305a\u30b3\u30e1\u30f3\u30c8\u3092\u6b8b\u3057\u3001\u5404\u90e8\u5206\u306e\u610f\u5473\u3092\u8aac\u660e\u3059\u308b<\/li>\n\n\n\n<li><strong>\u4ee3\u66ff\u624b\u6bb5\u3082\u691c\u8a0e\u3059\u308b<\/strong>: \u6b63\u898f\u8868\u73fe\u304c\u6700\u9069\u306a\u89e3\u6c7a\u7b56\u3067\u306a\u3044\u5834\u5408\u3082\u3042\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<p>\u6b63\u898f\u8868\u73fe\u306f\u7fd2\u5f97\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u30b9\u30ad\u30eb\u3067\u3059\u304c\u3001\u6295\u8cc7\u3059\u308b\u4fa1\u5024\u306f\u5341\u5206\u306b\u3042\u308a\u307e\u3059\u3002\u672c\u8a18\u4e8b\u3067\u5b66\u3093\u3060\u6280\u8853\u3092\u5b9f\u8df5\u3057\u3001\u65e5\u3005\u306e\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3067\u5c11\u3057\u305a\u3064\u7d4c\u9a13\u3092\u7a4d\u3080\u3053\u3068\u3067\u3001<code>preg_match<\/code>\u3092\u81ea\u5728\u306b\u4f7f\u3044\u3053\u306a\u305b\u308bPHP\u30a8\u30f3\u30b8\u30cb\u30a2\u306b\u306a\u308c\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u304a\u3044\u3066\u3001\u6587\u5b57\u5217\u64cd\u4f5c\u306f\u907f\u3051\u3066\u901a\u308c\u306a\u3044\u91cd\u8981\u306a\u51e6\u7406\u306e\u4e00\u3064\u3067\u3059\u3002\u7279\u306b\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u691c\u8a3c\u3084\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u306e\u60c5\u5831\u62bd\u51fa\u306a\u3069\u3001\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u304c\u5fc5\u8981\u306a\u5834\u9762\u3067\u306f\u6b63\u898f\u8868\u73fe\u306e\u77e5\u8b58\u304c\u4e0d\u53ef\u6b20\u3068\u306a\u308a\u307e\u3059\u3002 PHP\u3067 &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,63],"tags":[],"class_list":{"0":"post-3465","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-php","7":"category-php-syntax","8":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/3465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3465"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/3465\/revisions"}],"predecessor-version":[{"id":3466,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/3465\/revisions\/3466"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}