我有一些文字,其中一些线条用4个空格缩进。我一直在尝试编写一个正则表达式,它会找到以4个空格开头的每一行,并在开头放一个<span class="indented">
,在结尾放一个</span>
。不过,我对正则表达式并不擅长,所以它什么都没有。有办法吗?
(我正在使用PHP,以防有一个比正则表达式更容易的选项)。
示例:
Text text text
Indented text text text
More text text text
A bit more text text.
为:
Text text text
<span class="indented">Indented text text text</span>
More text text text
A bit more text text.
答案 0 :(得分:3)
以下内容将匹配以至少4个空格或制表符开头的行:
$str = preg_replace("/^(?: {4,}|\t *)(.*)$/m", "<span class=\"indented\">$1</span>", $str);
答案 1 :(得分:0)
我必须做类似的事情,我可能建议的一件事就是将目标格式更改为
<span class="tab"></span>Indented text text text
然后你可以设置你的css类似.tab {width:4em;}
而不是使用preg_replace和regex,你可以做
str_replace($str, " ", "<span class='tab'></span>");
这样可以让8个空格容易变成双倍宽度的标签。
答案 2 :(得分:0)
我认为这应该有效:
//get each line as an item in an array
$array_of_lines = explode("\n", $your_string_of_lines);
foreach($array_of_lines as $line) {
// First four characters
$first_four = substr($line, 0, 4);
if($first_four == ' ') {
$line = trim($line);
$line = '<span class="indented">'.$line.'</span>';
}
$output[] = $line;
}
echo implode("\n",$output);