2016-11-27 4 views
0

私は少し迷っています。以下の正規表現は、期待通りに動作します:正規表現が閉じないスパン

$src_data = preg_replace("/&quot;(.+?)&quot;/", "<span class=\"src_att\">$0</span>", $src_data); 
$src_data = preg_replace("/'(.+?)'/", "<span class=\"src_att\">$0</span>", $src_data); 

しかし、これはスパンクローズに失敗:十分

$src_data = preg_replace("/\/\/(.+?)\n/", "<span class=\"src_com\">$0</span>", $src_data); 

確かにそれは何かのトリビアですが、私はエラーを見ることができません。どんな助力も感謝しています。

EDIT:

の$ src_dataは何もすることができ、例えば1行または複数行。以下の単一引用符を持つ例である - 期待どおりに動作awhich:

$ds_type = array ('Bytes', 'KiB', 'MiB', 'GiB', 'TiB'); 

コメントに一致するようにしようとすると、決算スパンを追加するために失敗し、たとえ:

//** this is just a comment 

出力は明らかにrenderd罰金ですが、マークアップは、スパンがないため無効です。

+2

$ src_dataのいくつかの例を追加できます – Danijel

+0

''は改行が '$ 0'の最後にあるので次の行にあります。 – Barmar

+0

文字列の末尾ではなく行末にマッチする 'm'オプションとともに' \ n'の代わりに '$'を使うべきでしょう。 – Barmar

答えて

0

これは嫌いですが、修正されて以来、私は自分自身に答えるでしょう。 $/mと一緒に.*?から.*+?を変更

$src_data = preg_replace("/\/\/(.*?)$/m", "<span class=\"src_com\">$0</span>", $src_data); 

はそれが取ったすべてでした。私はトリビアについて言及したのです...ありがとうございました。