人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpの正規表現で、

http://are.kore.sore/dore//hate/na//
http://are.kore.sore/dore//hate/na//dayo.jpg

というような「//」が不正に入ったテキストから、
http://以外の // を / にして、

http://are.kore.sore/dore/hate/na/
http://are.kore.sore/dore/hate/na/dayo.jpg

というように、正しいURLにしたいと思っていますが、
初めの//も検出されて困っています。

アドバイス頂けると助かります。

●質問者: onigirin
●カテゴリ:ウェブ制作
✍キーワード:http:// PHP アドバイス テキスト 不正
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● STRing
●27ポイント
[^:]//

このようにして「:以外の文字の後に//」と云う条件で置換してやるのがスマートかと。

正規表現メモ

正規表現メモ


なお、 // を / にしてから :/ を :// にするというのは多分タブー。

◎質問者からの返答

どうもありがとうございます。

無事解決しました!

メモとても参考になりました。


2 ● subweb
●27ポイント

$str = 'http://are.kore.sore/dore//hate/na//dayo.jpg';

$str2 = ereg_replace("[^://]//", "/", $str);

print $str2;

print "\n";


こんな感じではないでしょうか。

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm

こういったところを参考に、 :// 以外で、 // を置換

という考えで書きました。

◎質問者からの返答

どうもありがとうございます。

無事解決しました!

URLも大変参考になりました。


3 ● Yota
●26ポイント

$str = 'http://are.kore.sore/dore//hate/na//dayo.jpg' ;

$pattern = '/([^:\/]{1})\/+/';

$replacement = '$1/';

preg_match_all($pattern,$str,$matches) ;

for($i = 0 ;$i < count($matches[0]) ;$i++ ) {

$matches_r[] = preg_replace($pattern,$replacement,$matches[0][$i]) ;

}

echo str_replace($matches[0],$matches_r,$str) ;

◎質問者からの返答

どうもありがとうございます。

無事解決しました!

パターンの例は勉強になり助かりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ