2011-08-02 3 views
0

私は文字列の周りに2つのスペースの間で未知のテキストを見つけたいだけです。 例えば:私はこれで何をしたいか私の文字列のまわりで未知の文字列を見つける

$mystring = "blabalbla <b>sometext</b> <b>ssssss</b>" 

私は「sometextを」知っているが、私は、文字列に

<b>sometext</b>. 

を載せていきたいと思います。しかし、私の文字列が常にありますたとえば、次のように変更することができます。

<s><b>sometext</b></s> 

ここで、全体を文字列に入れる必要があります

<s><b>sometext</b></s>. 

は、だから、私はその周りに未知の文字列を持つことができる場合に

<b>.mystring.</b> 

beacuseに私の変数を取り付けるだけで使用することはできません。

どうすればいいですか?または、それらを見つけて削除する別の方法がありますか?

<b><s><i></b></s></i> etc.... around my string? 

Thnaks、Creepです。

答えて

0

あなたは正規表現を使用できます。

$mystring = preg_replace('/(^|\s)(?:<[^>]*>)*sometext(?:<[^>]*>)*(\s|$)/i', '$1'.$some_new_text.'$2', $mystring); 

を私はあなたが提供するものに対して、これをテストし、かなりよく動作するはずです。それは、それ自身の文字列の先頭または末尾にあるテキストを処理し、無制限の数のHTMLエンティティで囲まれます。そう

説明

  • 一致いずれかの文字列の開始、またはスペースゼロ以上のHTMLノード続く(^|\s)
  • (?:<[^>]*>)*
    • これらは、非キャプチャグループであり、彼らが知られているのに続いて
  • グループ番号を割り当てられません。この文字列は動的なものである上
    • あなたが計画している場合 をトリング、あなたはどちらかのスペースに続いてゼロ個以上のHTMLノード(?:<[^>]*>)*
    • によって
  • が続く任意の特殊文字をエスケープするpreg_quoteメソッドを使用する必要があります文字列の末尾または(\s|$)
  • マッチケースinsensitvely /i(オプション)

お知らせ置換文字列$1$2に、先頭と末尾の空白(ある場合)が追加されます。

関連する問題