0

私はhtml文字列を持っています

$html = <p>I'm a para</p><b>  I'm bold  </b>

これで、次のように php 正規表現を使用して、太字のタグを wiki マークアップ (*) に置き換えることができます。

$html = preg_replace('/<b>(.*?)<\/b>/', '*\1*', $html); 

これとは別に、太字タグの先頭と末尾の空白を同じ php のpreg_replace関数で削除することも必要です。

誰でもこれを行う方法について私を助けることができますか?

前もって感謝します、

ヴァルン

4

3 に答える 3

1

使用してみてください:

$html = preg_replace('~<b>\s*(.*?)\s*</b>\s*~i', '*\1*', $html);

\sタグと保持する文字列の間にあると、トリムするスペースが取り除かれます。i大文字と小文字を区別しないためのフラグであり~、区切り記号として使用したため、スラッシュをエスケープする必要はありません。

于 2013-09-16T12:26:52.440 に答える
1

これとは別に、太字タグの先頭と末尾の空白も削除したい

これで十分簡単です。

$html = preg_replace('/<b>\s+(.*?)\s+<\/b>/', '*\1*', $html);

デモを見る

于 2013-09-16T12:29:06.817 に答える
1

\sそのために記号を使用します( \s*0回以上の出現がある可能性があることを意味します):

$html = preg_replace('/\<b\>\s*(.*?)\s*\<\/b\>/i', '*\1*', $html);

i-htmlタグは大文字と小文字が区別されないため、修飾子を使用することもお勧めします。そして最後に、より安全のためにシンボル<>をエスケープする必要があります (これらはいくつかの正規表現コンストラクトの一部です。正規表現はエスケープしなくても機能しますが、エスケープするのは良い習慣なので、エラーを回避するようにしてください)。

(編集): 「末尾/先頭」の意味を誤解しているようです。

于 2013-09-16T12:19:24.100 に答える