首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将HTML文件转义为字符串,用作regex字符串

将HTML文件转义为字符串,用作regex字符串
EN

Stack Overflow用户
提问于 2019-09-02 17:48:47
回答 1查看 154关注 0票数 0

我正在将HTML文件加载到一个变量中,并将其作为匹配的字符串在preg_match中使用。

现在,我需要的是转义所有存在的特殊字符,使其与regex一起工作。

代码语言:javascript
复制
TAB => \t
NEWLINE => \n
CARRIEG RETURN => \r
CARRIEG RETURN+NEWLINE => \n
VERTICAL TAB => \cK
and other special characters...

例如,这个HTML文件

代码语言:javascript
复制
text \text text <tag attr="val"> text </tag> 
text text $ ^ text
{} text text text 
text | text

将转换为

代码语言:javascript
复制
text \\text text \<tag attr\=\"val\"\> text \<\/tag\> \ntext text \$ \^ text\n\{\} text text text \ntext \| text

有一些内置的功能可以让我的生活更轻松?

更新:

我使用这个函数使regex函数可以访问字符串,这些函数看起来工作正常:

代码语言:javascript
复制
private function real_regular_expression_string($text) {
    // Escape backslashes
    $text = preg_replace('/[\\\\]/', '\\\\', $text);
    // Escape regular expression special character
    $text = preg_quote($text, '/');
    // Search and Replace variable for another special characters
    $search = [
        "\n",   // 2 - New line character
        "\r",   // 3 - Carriage-Return character
        "\t",   // 4 - Horizontal tab character
        "\v",   // 5 - Vertical tab character
        "\e",   // 6 - Escape character
        "\f",   // 7 - Form-feed character
    ];
    $replace = [
        '\n',   // 2 
        '\r',   // 3
        '\t',   // 4
        '\cK',  // 5
        '\a',   // 6
        '\f',   // 7
    ];
    $text = str_replace($search, $replace, $text);
    // A littel fix
    $text = str_replace('\r\n', '\n', $text);
    return $text;
}

知道怎么做才能更好吗?

但是,现在preg_match不能正常工作:\

我从上面的函数中得到了这个正则字符串:

代码语言:javascript
复制
/(?:(?:.*)(?:\r\n|\r|\n))*(?<offset>.*)(?:\$\{ALMdOG \= \n\t\$\{ALMdOG\} \n\})/

HTML文件是:

代码语言:javascript
复制
text text text text 
numerofcharacters ${ALMdOG = 
    ${ALMdOG} 
} 
text text text text 
text text text text 
text text text text 

哪个应该起作用并且停止我的痛苦,有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2019-09-02 17:53:44

你可能在找preg_quote

从医生那里:

preg_quote()接受str,并在正则表达式语法的每个字符前面加一个反斜杠。

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

https://stackoverflow.com/questions/57761005

复制
相关文章

相似问题

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