![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
PHPのpreg_replaceを使用して、
imgタグをaタグに置換するプログラムで躓いています。
全てのパターン$hogeで適用される正規表現をかけません。
(※現在パターン1のみ出来ない状況で困っています)
間違い箇所ありましたらご教授下さい。
■パターン1
$hoge = '<img src="http://test.jp/test.gif" class="test" style="border:none;" />';
■パターン2
$hoge = '<img src="http://test.jp/test.gif">';
■パターン3
$hoge = '<img width="100" src="http://test.jp/test.gif">';
preg_replace('/\<img(.*)src=\"?(http[\-_\.\!\~\*\'\(\)a-z0-9\;\/\?\:@&=\+\$\,\%\#]+(jpg|jpeg|gif|png|bmp))\"(.*)\>/i',"<a href='\\2'>link</a>",$hoge);
どうぞよろしくお願い致します。
No.2ベストアンサー
- 回答日時:
こんな感じで良いのでしょうか?
<?php
$hoge0 = '<img src="http://test.jp/test.gif" class="test" style="border:none;" />';
$hoge1 = '<img src="http://test.jp/test.gif">';
$hoge2 = '<img width="100" src="http://test.jp/test.gif">';
$ptn='/<img[^>]*(https?:.*?(gif|jpeg|jpg|bmp)).*?>/i';
$sub="<a href='\\1'>link</a>";
echo "\nhoge0= ".preg_replace($ptn,$sub,$hoge0);
echo "\nhoge1= ".preg_replace($ptn,$sub,$hoge1);
echo "\nhoge2= ".preg_replace($ptn,$sub,$hoge2);
?>
No.4
- 回答日時:
httpやら拡張子やらいります?
<?php
$hoge=<<<eof
<img src="http://test.jp/test.gif" class="test" style="border:none;" />
<img src="http://test.jp/test.gif">
<img width="100" src="http://test.jp/test.gif">
eof;
$pattern='/<img .*?src="(.*?)".*?>/i';
$replacement="<a href='\\1'>link</a>";
print preg_replace($pattern,$replacement,$hoge);
?>
No.3
- 回答日時:
<?php
$hoge = '<img src="http://test.jp/test.gif" class="test" style="border:none;" />';
print(preg_replace('{<img(?:.*)src="(http://[-_.!~*\'()a-z0-9;/?@&=+$,%#]+\.(?:jpe?g|gif|png|bmp))"(?:.*)>}i',"<a href='\\1'>link</a>",$hoge));
No.1
- 回答日時:
厳密なチェックはしていませんが、要はhttpで始まるURLを抜き出せばいいのですよね?だとすれば、正規表現のパターンももっと単純化できそうな気がします。
ひとまず「http(.*)+(gif|jpeg|jpg|bmp)」というパターンで抽出したい文字列を変数$hogeに保存し、strip_tags関数でimgタグを削除。最後に<a href="{$hoge}">を元の文字列に入れておしまい、という感じでいかがでしょうか?
# かなり冗長かつ泥臭いので、おススメはできませんが・・・
参考URL:http://www.rider-n.sakura.ne.jp/regexp/regexp.php
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS ブロックエディターで作りつつ、画像を挿入しつつ、画像にスタイルシートのコードを付ける方法はありますか 1 2022/08/23 18:46
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- PHP タグの追加 1 2022/08/19 11:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA コレクションに2次元配列...
-
PHPで呼び出し元の関数名の取得...
-
protectedなのにアクセスできな...
-
VB6のコンボボックスのテキスト...
-
IIS5.1で「規定のドキュメント...
-
アロー演算子について
-
PHP正規表現の難題・preg_repla...
-
デフォルトの定義済みクラスに...
-
templateクラスについて
-
PHPの名前空間インポートについて
-
PHPランダム表示
-
VB.NETからVBAマクロ(引数)を呼...
-
PHPで文字列内に指定した文字が...
-
「取得先」という表現について
-
Dosブロンプトでtabを出力したい
-
ファイル名に日付の挿入
-
wordの差し込み印刷で文字...
-
DTOとEntityの差は何ですか。
-
バッチファイルでpingの結果を...
-
【C#】DataGridViewの最大列数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA コレクションに2次元配列...
-
エラーの理由が分りません。Pri...
-
可変変数にアロー演算子を使いたい
-
VB.NETからVBAマクロ(引数)を呼...
-
PHP、ヒアドキュメント内でのIF...
-
VB.NETSystem.Xml 要素数を得る...
-
どういうプログラムを関数化を...
-
vb作成したらでbeep音が鳴りま...
-
次のhtml・cssでspan内の文字を...
-
classの再定義エラーについて
-
既存関数の上書き
-
protectedなのにアクセスできな...
-
配列の操作時にLNK2001外部シン...
-
UNIX CP "で上書きしません"
-
PHPでの画像の形式の変換
-
PHPプログラム上で「URLを直接...
-
Let's Encryptで自動更新がされ...
-
ExcelVBAで部分一致(*)をしたい
-
VB6のコンボボックスのテキスト...
-
ASPのResponse.WriteをPHPでは...
おすすめ情報