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

如何将此行“XX<I>\r</I><I>\n</I>”过滤到XX?

  •  1
  • ganjan  · 技术社区  · 15 年前

    题目里有问题。我试过剥离标签,但结果显示为空,我试过使用preg\u replace,但我不太明白语法显然。。

    试过这个

        $test = "Home<i>\r</i><i>\n</i>";       
    $patterns = array();
    $patterns[0] = '<i>';
    $test = preg_replace($patterns, '', $test);
    

    但是echo$test还是一样的!

    3 回复  |  直到 15 年前
        1
  •  4
  •   Jonathan Kuhn Reignier Julien    15 年前

    如果您只想将字符串的第一部分添加到第一个标记,那么可以使用以下方式:

    $test = "Home<i>\r</i><i>\n</i>";
    preg_match('/^[^<]+/', $test, $match);
    echo $match[0];
    

    如果要删除所有标记,请使用strip\u tags,也可以使用preg\u replace,例如:

    $test = "Home<i>\r</i><i>\n</i>";
    $test = preg_replace('/<[^>]+?>/', '', $test);
    echo $test;
    
        2
  •  0
  •   31eee384    15 年前

    strip_tags 将返回XX\r\n,因此 preg_replace 可能就是你要找的,假设它真的能做你想做的。我自己也不知道它是否会像你想的那样去掉标签,但是如果你只是不懂语法,请仔细阅读 here

    希望这有帮助。

        3
  •  0
  •   Jeffrey Blake    15 年前

    preg\u replace()语法的问题是没有将模式定义为精确的正则表达式。如果您使用str\u replace(),那么您的方法就可以工作了,但是对于preg\u replace(),正确的识别模式是 <i> '/<i>/' / 字符将其定义为正则表达式。

    $test = "Home<i>\r</i><i>\n</i>";       
    $patterns = array();
    $patterns[0] = '/<\/?i>/'; //removes <i> and </i>
    $patterns[1] = '/\r|\n/'; //removes \r and \n
    $test = preg_replace($patterns, '', $test);