今日、質疑応答システムを作成してオンラインにアクセスしたところ、多くの人がリンクを投稿していることがわかりました。ビジネス部門から、Web サイトのアドレスをフィルタリングするよう求められたので、文字列 URL アドレスを抽出する関数を共有します。次のように:
$str ='本文实例讲述了php匹配字符串里所有URL地址的方法。http://www.manongjc.com 分享给大家供大家参考'; preg_match_all("/http:[\/]{2}[a-z]+[.]{1}[a-z\d\-]+[.]{1}[a-z\d]*[\/]*[A-Za-z\d]*[\/]*[A-Za-z\d]*/",$str,$array2); print_r($array2);
実行結果:
( [0] => Array ( [0] => http://www.manongjc.com ) )
ここでは preg_match_all 関数が主に使用されます。 この関数の具体的な使用法は次のとおりです:
preg_match_all - グローバル正規表現マッチングを実行します
構文:
int preg_match_all ( string pattern, string subject, array matches [, int flags] )
pattern で指定されたすべてのパターンを件名で検索します。 正規表現はコンテンツと一致し、結果をフラグで指定された順序で一致させます。
最初の一致を検索した後、それ以降の検索は前の一致の終わりから開始されます。
PREG_PATTERN_ORDER と PREG_SET_ORDER には特別な注意を払ってください
フラグには、次のフラグを組み合わせることができます (PREG_PATTERN_ORDER と PREG_SET_ORDER を一緒に使用しても意味がないことに注意してください):
$matches になるように結果を並べ替えるために PREG_PATTERN_ORDER
を使用する場合[0] はすべてのパターンの配列に一致します。$matches[1] は、最初の括弧内のサブパターンと一致する文字列で構成される配列です。以下同様です。 (つまり、$matches[0] [0] はすべてのパターン一致の 2 番目の項目、$matches[0] [1] はすべてのパターン一致の 2 番目の項目、$matches[1] [0] は次の一致です各項目。括弧内の最初の項目 $matches[1] [0] は、各括弧内の 2 番目の項目と一致します)
<?php preg_match_all ("|<[^>]+>(.*)</[^>]+>|U","<b>example: </b><div align=left>this is a test</div>",$out, PREG_PATTERN_ORDER); /* http://www.manongjc.com/article/1591.html */ print $out[0][0].", ".$out[0][1]."\n"; print $out[1][0].", ".$out[1][1]."\n"; ?>
出力結果:
<b>example: </b>, <div align=left>this is a test</div> example: , this is a test
詳細 PHP は正規表現を使用して文字列内の URL を取得します。記事をご覧になる際は、PHP 中国語 Web サイトにご注意ください。