我目前正在代码中使用preg_replace PHP函数来排除一些html实体。但是,在开发代码时,我发现了regex模式中的一些困难,我在代码中使用了这些困难。
我有以下类型的html单位,
<div class="css-1" style="style-1:10px; style-2: 5px"> --sample 1-- </div>
<div class="css-1" style="style-1: 10px; style-2:5px">--sample 2-- </div>
<div class="css-1" style="style-1: 10px; style-2: 5px">--sample 3--</div>
<div class="css-1" style="style-1:10px; style-2:5px"> --sample 4-- </div>结构非常相似,但我会在这里和那里得到一些空间。
如果在regex中有任何匹配,我尝试使用下面的regex来排除html实体。
$regex = '/(<div class="css-1" style="style-1:10px; style-2: 5px">[\s]+\-\-\b(sample 1|sample 2|sample 3|sample 4)\b\-\-[\s]+<\/div>)/';
$html = <<<EOD
<div class="css-1" style="style-1:10px; style-2: 5px"> --sample 1-- </div>
<div class="css-1" style="style-1: 10px; style-2:5px">--sample 2-- </div>
<div class="css-1" style="style-1: 10px; style-2: 5px">--sample 3--</div>
<div class="css-1" style="style-1:10px; style-2:5px"> --sample 4-- </div>
EOD;
$clean = preg_replace($regex, '', $html);但是由于变量空间不好,它不能像我预期的那样工作。我需要删除完整的div,如果它包含一个样本1,样本2,样本3或样本4。最好我可以忽略样式和空间。
例:
<div>--sample 1--</div>类似于
<div class="css-1" style="style-1:10px; style-2: 5px"> --sample 1-- </div>当涉及到regex。
我不擅长这个regex,我仍然找不到如何忽略这些可变空间。
请帮我解决这个问题。
提前谢谢。
发布于 2017-08-30 10:59:50
在这里,我使用*来匹配模式需要的零或多个空格。
sample [1234]{1}将只匹配其中的一个,所以14是安全的。
$re = '/<div\s+class=\"css\-1\"\s+style=\"style-1:\s*10px;\s+style-2:\s*5px\">.*?sample\s*[1|2|3|4]{1}--\s*<\/div>/';
$str = '<div class="css-1" style="style-1:10px; style-2: 5px"> --sample 1-- </div>
<div class="css-1" style="style-1: 10px; style-2:5px">--sample 2-- </div>
<div class="css-1" style="style-1: 10px; style-2: 5px">--sample 3--</div>
<div class="css-1" style="style-1:10px; style-2:5px"> --sample 4-- </div>
<div class="css-1" style="style-1:10px; style-2:5px"> --sample 14-- </div>';
$subst = '';
$result = preg_replace($re, $subst, $str);
echo $result;https://stackoverflow.com/questions/45957994
复制相似问题