私はhtml input = text経由で入力されたbase_urlを取り除き、_POSTから取り出しました。入力そのものは完全なURIを含むと予想される可能性が最も高いですが、おそらくはポートの割り当てに続いていくつかのパス区切り文字が続きます。html入力文字列から完全なbase_urlでプロトコルと結果を削除します
例:私は3つの結果のインスタンスとそれらの値まで必要https://lab1.sfo1.transparentpixel.com:554/rtmp/ _definst_
は、アレイ内に配置なってしまいます。 HISTORICAL REVIEW FOR
OLD:
<?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);
?>
EDIT後に修正:
だから私は、次のコードになってしまった、スタンドアロンスクリプトで物事をテストする
<?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_を実行するコストは、全体のスキームの中で最小です。
私は単に私がreg-exやpreg_replaceに関して何かのマスターではないと確信しているので、単に洞察力を求めています。
入力?
あなたは、URLの唯一の可能なタイプを与えてくれたものを3つのURLですか?たとえば、 'http:// someurl.com'や' someurl.com:1935/rtmp/_definst_'もできますか? – Robbie
あなたはこのコードが "私が意図した通りに動作する"と言っていますが、私がそれを実行すると$ {var。$ count}を置いたので動作しません。どちらが間違っている(私は思う)。また、あなたの質問が何であるか分かりません。あなたは新しい配列にホスト部分だけを追加しながらURLのリストをループさせようとしていますか? – Robbie
Robbieより上のコードを修正しました。ありがとう!この場合変数変数を使うのは正しいですが、私は変数を "var"と宣言したコードをコピーしていましたが、これは明らかにPHPが好きではありません。 :| TILは$ varを使用しません。 – msmithng