2016-07-04 13 views
1

に置き換えてください。今日、奇妙なことに取り組んでいます - HTMLエディタにクライアントが貼り付けられます。私はブラウザに出力するときにこれをスタイルする必要があります。複数の '     'をHTMLタグ

私はこれに次の文字列

<ul class="columns"> 
    <li><u>Running costs</u></li> 
    <li>Urban mpg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50.4 mpg</li> 
    <li>Extra Urban mpg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 72.4 mpg</li> 
</ul> 

変更しようとしています:プリプレグを交換したり、HTMLパーサ使用

<ul class="columns"> 
    <li><u>Running costs</u></li> 
    <li>Urban mpg<span class="right">50.4 mpg</span></li> 
    <li>Extra Urban mpg<span class="right">72.4 mpg</span></li> 
</ul> 

を。私は両方を試みました。で、すべての&nspb;年代に取って代わる

preg_replace("/(&nbsp;)/", "<span>", $input_lines); 

:私のPHPのにpreg_replaceはこれです。私は1つのスパンを追加したいだけで、私はそれを最後に閉じる必要があります。私はシンプルなHTMLのDomとexpermintingているが、これを達成するためにどのような機能を使用するか分からない。

おかげ

+1

エコーにpreg_replace( '/( )+([^ <] +) \ 2 '、$ input_lines); – splash58

答えて

3

あなたはそれがすべての繰り返し&nbsp;と一致し、その後、終了タグの<までのすべてをつかむ

<span class="right">\1</span> 

と交換

(?:&nbsp;)+([^<]*) 

を試みることができます。上記の文字列に置き換えると、キャプチャが周囲のspanに挿入されます。

See it here at regex101

0

あなたはCSSセレクタを使用することができ、あなたはエスケープUnicode値を必要とするだろう。

span.right::before { 
    content: "\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0"; 
} 
+0

私はスペースを出力しようとしていません。私はそれらをPHPを使用してスパンに置き換えようとしています –

+0

私の謝罪、疑問を誤解しました。 @ClasGが提供する答えをお勧めします。 –

0

これは動作するはずです。

<?php 
$text = '<ul class="columns"> 
    <li><u>Running costs</u></li> 
    <li>Urban mpg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50.4 mpg</li> 
    <li>Extra Urban mpg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 72.4 mpg</li> 
</ul>'; 

$new_text = preg_replace("/(?:&nbsp;)+([^<]*)/", " <span class=\"right\">\${1}</span>", $text); 
echo $new_text; 

結果:https://eval.in/600085

0

は試してみてください。この

<?php 
$text = "<ul class='columns'> 
<li><u>Running costs</u></li> 
<li>Urban mpg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50.4 mpg</li> 
<li>Extra Urban mpg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 72.4 mpg</li> 
</ul>";  
echo $text; 
$pattern = '/(&nbsp;)+([\w\.\s]+)(<\/li>)/'; 
$text = preg_replace($pattern,'<span class="name">$2</span>', $text); 

echo htmlspecialchars($text); 
?> 
関連する問題