代码之家  ›  专栏  ›  技术社区  ›  marknt15

php:如何在所有HTML标记中将单引号转换为双引号?

  •  5
  • marknt15  · 技术社区  · 16 年前

    在所有HTML标记中,如何将所有单引号转换为双引号?有更简单的方法吗? 谢谢)

    例如: 如何转换此字符串(工作中的实际数据):

    <TEXTFORMAT LEADING='2'><P ALIGN='LEFT'><FONT FACE='Verdana' style="font-size:10' COLOR='#0B333C'>My name's Mark</FONT></P></TEXTFORMAT>
    

    对此:

    <TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Verdana" style="font-size:10" COLOR="#0B333C">My name's Mark</FONT></P></TEXTFORMAT>
    
    6 回复  |  直到 16 年前
        1
  •  3
  •   Xiaofu    16 年前

    如果您不关心其他地方提到的javascript和css问题,请尝试以下操作:

    $text = "<TEXTFORMAT LEADING='2'><P ALIGN='LEFT'><FONT FACE='Verdana' style='font-size:10' COLOR='#0B333C'>My name's Mark</FONT></P></TEXTFORMAT>";
    echo preg_replace('/<([^<>]+)>/e', '"<" . str_replace("\\\\\'", \'"\', "$1") . ">"', $text);
    

    这是由一个和你完全一样的问题的人从一个线程中获取的。 devshed.com .

        2
  •  3
  •   Keith Bentrup    16 年前

    我假设当您在所有HTML标记中说,您指的是包含属性的所有单引号。你不会想要的 <a onclick="alert('hi')"> 转换后的B/C会破坏代码。

    任何正则表达式都是脆弱的。 如果您知道您的输入将是一组特定的简单案例, 你可能对Regex没意见 . 否则,您需要一个能够理解复杂HTML标记的DOM解析器,比如 onmouseover="(function () { document.getElementById(''); alert(\"...\")...})()" (例如)。此外,属性可以跨多行。;)

    我最近没必要解决这个问题,但也许有个好办法 HTML Tidy (这里更多: http://devzone.zend.com/article/761 )或者像这样的解析器 http://sourceforge.net/projects/simplehtmldom/

        3
  •  1
  •   Babiker    16 年前

    我知道我可以使用regex,但请尝试一下:assign $字符串 内容使用 fpen()、fread()等…

    $string = str_replace("'", '"', $string);
    $array = explode('>', $string);
    foreach($array as $key => $value){
        if(strpos($value, '<') <> 0 ){
           $array[$key] = str_replace('"', "'",$value);
        }
    }
    $string = implode('>',$array);
    
        4
  •  0
  •   Daan    16 年前

    不确定你到底想完成什么…使用php替换字符串片段可以使用str_replace函数完成:

    str_replace("'", "\"", $yourString);
    
        5
  •  0
  •   Sander Marechal    16 年前

    使用 Tidy 它可以修复HTML汤并输出干净的XHTML。它也能做其他的好事,比如解决筑巢问题,降低标签,等等。

        6
  •  0
  •   macbirdie    16 年前

    我要么使用DOM解析器,要么使用我自己的简单标记解析器,它可以理解引用和转义引号字符,这样就不需要 "he said \"blah\"" 作为 he said \ , blah\ 空字符串 .

    它可以很容易地检测出要修改的引用是否在标记内。多年来,我了解到正则表达式对于此类任务来说过于脆弱。

    推荐文章