我有一个包含css的html字符串,类似于:
<div style="display: none; someotherstyle: freaky; etc ...">
Some Content
</div>
我想在PHP中处理字符串以删除display: none;
的所有实例
但我也想补偿差异,例如区分大小写,组件之间的空白区域(例如display : none ;
)和遗漏分号(即display:none
)< / p>
谢谢你的任何建议!
答案 0 :(得分:1)
使用解析器可能更安全,尽管您仍然需要正则表达式来在style属性中找到该特定值。这是一个起点。
$string = 'But I\'d also like to compensate for discrepancies such as case sensitivity, white space between the components (eg. display : none ;) and omission of the trailing semicolon (ie. display:none)';
echo preg_replace('/display\h*:\h*none\h*;?/', '', $string);
输出:
But I'd also like to compensate for discrepancies such as case sensitivity, white space between the components (eg. ) and omission of the trailing semicolon (ie. )
\h
是一个水平的空格
*
是一个量词,表示前一个字符出现零次或多次。 (在这种情况下是空格)
/
是delimiters,他们告诉正则表达式开始和结束的位置
?
使前面的字符/组可选。
Regex101演示:https://regex101.com/r/cE1pC6/1
正如您在输出中注意到的那样,它不会删除任何包含display: none
的父项(带有可选位)。因此,例如(eg. )
被遗忘,但display: none ;
已消失。
可以在结束分隔符后添加i
modifier,因此表达式不区分大小写。
答案 1 :(得分:0)
您可以使用 sed 执行此操作。
sed "s/display\s*:\s*none\s*;\?\s*//ig" test.txt