【发布时间】:2014-05-11 00:25:33
【问题描述】:
我正在尝试从 html 属性中删除单引号和双引号,这些属性是没有空格的单个单词。我写了这个确实有效的正则表达式:
/((type|title|data-toggle|colspan|scope|role|media|name|rel|id|class|rel)\s*(=)\s*)(\"|\')(\S+)(\"|\')/ims
我没有指定所有要删除引号的 html 标记,而是仅列出要忽略的几个属性,例如 src 和 href,并删除所有其他属性名称上的引号。所以我写了下面的,但对我的生活来说它不起作用。它有些方法必须检测除 href 和 src 之外的任何属性名称。我尝试了各种组合。
/((?!href|src)(\S)+\s*(=)\s*)(\"|\')(\S+)(\"|\')/i
我已经尝试过了,但它不起作用。它只是从 href 和 src 的属性中删除 h 和 s。我知道我很接近但缺少一些东西。我在这上面花了 5 个小时。
工作示例
$html_code = 'your html code here.';
preg_replace('/((type|title|data-toggle|colspan|scope|role|media|name|rel|id|class|rel)\s*(=)\s*)(\"|\')(\S+)(\"|\')/i', '$1$5', "$html_code");
【问题讨论】:
标签: html regex html-parsing