【问题标题】:Regex fails with whitespace正则表达式因空格而失败
【发布时间】:2011-03-11 04:45:24
【问题描述】:

$match = array('~(?:face\=[\'"]?(\w+)[\'"]?)~i', '~~i');
$replace = array('font-family:$1;', '');

我想用具有“style”属性的新 元素替换具有“face”属性的旧 元素,但是当“face”属性中的字体名称包含空格时,正则表达式总是失败,例如:快递新。如何修改正则表达式来解决这个问题?

【问题讨论】:

  • 使用正则表达式解析 HTML 通常不是一个好主意。
  • 但是我的 HTML 很简单,所以我不需要使用 DOM 来解析它:)

标签: php html css regex


【解决方案1】:

将您的\w+ 替换为.+ 以包含所有字符,而不仅仅是“单词”字符。或所有字符 除了 ' 像这样:[^\']+

更新版本:

$match = array('~(?:face\=[\'"]?([^\']+)[\'"]?)~i', '~~i');
$replace = array('font-family:$1;', '<span style="$1">');

【讨论】:

    猜你喜欢
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2019-11-09
    相关资源
    最近更新 更多