首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过忽略少数空格和样式在html字符串上开发preg替换

通过忽略少数空格和样式在html字符串上开发preg替换
EN

Stack Overflow用户
提问于 2017-08-30 10:28:12
回答 1查看 29关注 0票数 0

我目前正在代码中使用preg_replace PHP函数来排除一些html实体。但是,在开发代码时,我发现了regex模式中的一些困难,我在代码中使用了这些困难。

我有以下类型的html单位,

代码语言:javascript
复制
<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实体。

代码语言:javascript
复制
 $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。最好我可以忽略样式和空间。

例:

代码语言:javascript
复制
<div>--sample 1--</div>

类似于

代码语言:javascript
复制
<div class="css-1" style="style-1:10px; style-2: 5px"> --sample 1-- </div>

当涉及到regex

我不擅长这个regex,我仍然找不到如何忽略这些可变空间。

请帮我解决这个问题。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-30 10:59:50

在这里,我使用*来匹配模式需要的零或多个空格。

sample [1234]{1}将只匹配其中的一个,所以14是安全的。

代码语言:javascript
复制
$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://3v4l.org/Q2m7l

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45957994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档