2017-03-07 26 views
-2

私はこのような文字列があります。PHP;区切り文字と区切り文字の間の文字列を削除する方法は?

My name is <span class="bold">George</span> and I'm <span class="bold">21</span>. 

私は<span class="bold"></span>の間のすべてを削除する必要があり、これは自分自身を区切り文字。

私はこの出力を必要とする:

My name is and I'm . 

私は次のことを試してみました:

$string = "My name is <span class=\"bold\">George</span> and I'm <span class=\"bold\">21</span>."; 
$string = preg_replace('/[^<span class="bold">](.*)[^<\/span>]/',' ',$string); 

しかし、私は何も出力、空白のページを取得していませんよ。

私は間違っていますか?

+1

[タグ:正規表現]を使って[タグ:html]を解析することはできません(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags )。 – Xorifelse

+0

@ Xorifelse問題私は 'mb_strimwidth($ string、0,300、 '...'、 'utf-8')'を使用しています。これがhtmlタグで終わると私のレイアウトは "クラッシュする"。それ以外の場合は、もちろんCSSを使用します。 – David

+0

あなたはそれが問題を引き起こしていると思いますか?いいえ、問題は[正規表現でHTMLを解析しようとするたびに、悪意のある子供が処女の血を泣かせ、ロシアのハッカーたちがあなたのWebアプリケーションをPwnします](http://stackoverflow.com/a/1732454/4982088)です。 – Xorifelse

答えて

0

あなたは、このための正規表現を必要としています。

$str = 'My name is <span class="bold">George</span> and I\'m <span class="bold">21</span>.'; 
$fixed = preg_replace('@<span class="bold">(.+)</span>@Ui', '', $str); 

EDIT:あなたは空白のページを取得する

理由は、あなたが一致しようとしているパターンです。基本的には、のうち、でないものがの間にある空の区切り文字(この場合は、全体の文字列)の間を空白で置き換えることになります。したがって、1文字の文字列が得られ、空白になります。

PS:HTMLを解析するためにRegExpを使用すると、解決するよりも多くの問題が発生する可能性があるので、質問のコメントを読むことをお勧めします。

0

私はあなたがそれに付随するCSSファイルを使用していると思います。

もしそうなら、スパンクラス太字の場合、display:noneを設定することができます。

など:.bold {display:none;}、このソリューションを使用する場合は、同じクラス名を使用しないでください。あなたは区切り文字の間だか分からないよう

+0

問題は 'mb_strimwidth($ string、0,300、 '...'、 'utf-8')'です。これがhtmlタグで終わると私のレイアウトは "クラッシュする"。それ以外の場合は、もちろんCSSを使用します。手伝って頂けますか? – David

-1
<?php 
$string = 'My name is <span class="bold">George</span> and im <span class="bold">21</span>.'; 
echo $string = preg_replace('/[^<span class="bold">]{*}[^<\/span>]/',' ',$string); 
?> 

TRYこの...

+0

出力全体がクラッシュすることはありませんが、タグは削除されません。 – David

関連する問題