次のようなhtmlドキュメントとリンクがありますhttp://example.com/some?b=20130218082149&a=20130218092249&info=1152&hash=079caaaae2fcd602c6d8dx
それを見つけるには正規表現が必要です。表現を説明していただければ、とても助かります。
次のようなhtmlドキュメントとリンクがありますhttp://example.com/some?b=20130218082149&a=20130218092249&info=1152&hash=079caaaae2fcd602c6d8dx
それを見つけるには正規表現が必要です。表現を説明していただければ、とても助かります。
私の刺し傷
<?php
$pattern = "#^https?://([a-z0-9-]+\.)*blah\.com(/.*)?$#";
$tests = array(
'http://blah.com/so/this/is/good'
, 'http://blah.com/so/this/is/good/index.html'
, 'http://www.blah.com/so/this/is/good/mice.html#anchortag'
, 'http://anysubdomain.blah.com/so/this/is/good/wow.php'
, 'http://anysubdomain.blah.com/so/this/is/good/wow.php?search=doozy'
, 'http://any.sub-domain.blah.com/so/this/is/good/wow.php?search=doozy' // I added this case
, 'http://999.sub-domain.blah.com/so/this/is/good/wow.php?search=doozy' // I added this case
, 'http://obviousexample.com'
, 'http://bbc.co.uk/blah.com/whatever/you/get/the/idea'
, 'http://blah.com.example'
, 'not/even/a/blah.com/url'
);
foreach ( $tests as $test )
{
if ( preg_match( $pattern, $test ) )
{
echo $test, " <strong>matched!</strong><br>";
} else {
echo $test, " <strong>did not match.</strong><br>";
}
}
// Here's another way
echo '<hr>';
foreach ( $tests as $test )
{
if ( $filtered = filter_var( $test, FILTER_VALIDATE_URL ) )
{
$host = parse_url( $filtered, PHP_URL_HOST );
if ( $host && preg_match( "/blah\.com$/", $host ) )
{
echo $filtered, " <strong>matched!</strong><br>";
} else {
echo $filtered, " <strong>did not match.</strong><br>";
}
} else {
echo $test, " <strong>did not match.</strong><br>";
}
}