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

PHPで、一定の文字列から、[]でくくられた文字列(中身だけ)を$sakujoに入れた上で、[]も含めて全て削除する方法([、]という記号も削除)を教えて下さい。
また、HTMLタグが可能な投稿CSM(ブログの記事投稿画面など)からURLのみを完全削除する方法を教えて下さい。


●質問者: KENJI0620
●カテゴリ:ウェブ制作
✍キーワード:HTML PHP URL タグ 投稿
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● km1967
●35ポイント

$strは元の文字列

preg_replace("/\[" . $sakujo . "\]/", "", $str);

2 ● rouge_2008
●35ポイント ベストアンサー

preg_match_allで対象の文字列を配列に入れてから、preg_replaceで置換してはいかがでしょうか?

http://php.net/manual/ja/function.preg-match-all.php

http://www.php.net/manual/ja/function.preg-replace.php

$text = "ここに[、]対象のテキスト[(文章)]を入れてください。";
$pattern = "/\[(.+?)\]/";
preg_match_all($pattern, $text, $sakujo);
// [0]にはパターン全体にマッチする文字列が入っているので、[1]を使用します。
print_r($sakujo[1]);
echo "<br />";

// 元のテキストから抽出した文字列をすべて削除します。
$text = preg_replace($pattern, '', $text);
echo $text ."<br />";

CMSは何を使用しているのでしょうか?

記事投稿・編集画面のテキスト入力欄(TEXTAREA)のURLを削除したい場合は、次のようなブックマークレットを使用すると可能です。

javascript:(function(){
 var d=document;
 function r(s){
return s.replace(/(http:\/\/.+)\r*\n*/g,'');
} if(d.selection{
 d.selection.createRange().text = r(d.selection.createRange().text);
}else{
 var ta= d.getElementsByTagName('TEXTAREA');
 for(var i=0;i<ta.length;i++){
 if(ta[i].value){
 var s=ta[i].selectionStart;
 var e=ta[i].selectionEnd;
 var v=ta[i].value;
 var t=v.slice(s,e);
 if(t){
 ta[i].value=v.slice(0,s)+r(t)+v.slice(e);
}}}}})();

※テキスト入力欄(TEXTAREA)で、選択した範囲内にあるURLをすべて削除します。

※IE7、Firefox3.5.xおよび3.6で動作しました。

自分の日記ですが、人力検索でHTMLタグを表示したい時のお助けツールで紹介したブックマークレットを少しだけ改変して作りました。

お望みの事と違う場合は、何をしたいのかもう少し具体的に教えてください。

関連質問


●質問をもっと探す●



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