html input = textを介して提供され、_POSTから取得された入力からbase_urlを削除しようとしていました。入力自体には完全なURIが含まれている可能性が高いですが、ポートの割り当てとそれに続くいくつかのパス区切り文字も含まれている可能性があります。
例:https ://lab1.sfo1.transparentpixel.com:554 / rtmp / _definst_
結果を最大3つインスタンス化する必要があり、それらの値は最終的に配列に配置されます。
したがって、スタンドアロンスクリプトでテストするために、次のコードを使用することになりました。
歴史的レビューのために古い:
<?php
$var1 = "https://lab1.sfo1.transparentpixel.com:1935/rtsp/_definst_";
$var2 = "http://lab1.sfo1.transparentpixel.com:1935/rtmp/_definst_";
$var3 = "lab1.sfo1.transparentpixel.com";
$count = 1;
while ( $count <= 3 )
{
$test[] = 'var'.$count.' = ' . preg_replace(array("#^.*/([^\:]+)\:.*#"), '$1', ${var.$count});
$count++;
}
var_dump($test);
?>
編集後に修正:
<?php
$url1 = "https://lab1.sfo1.transparentpixel.com:1935/rtsp/_definst_";
$url2 = "http://lab1.sfo1.transparentpixel.com:1935/rtmp/_definst_";
$url3 = "lab1.sfo1.transparentpixel.com";
$count = 1;
while ( $count <= 3 )
{
$test[] = 'url'.$count.' = ' . preg_replace(array("#^.*/([^\:]+)\:.*#"), '$1', ${url.$count});
$count++;
}
print_r($test);
?>
私の結果:
$ php tpixel_url_replace.php
Array
(
[0] => url1 = lab1.sfo1.transparentpixel.com
[1] => url2 = lab1.sfo1.transparentpixel.com
[2] => url3 = lab1.sfo1.transparentpixel.com
)
これは意図したとおりに機能しますが、確かにいくつかの反復が欠落しています。私が見落としているかもしれないことを解明したいと思っている人はいますか?はい、str_replaceを使用できたはずですが、全体的なスキームでは、str_上でpreg_を実行するコストは最小限です。
私は正規表現やpreg_replaceに関することを何もマスターしていないと100%確信しているので、単に洞察を探しています。
入力?