【问题标题】:PHP alternative for preg_replace()?preg_replace() 的 PHP 替代方案?
【发布时间】:2012-12-08 03:40:40
【问题描述】:

我有一个带有几个特殊字符的长字符串,特别是引号(“,')和更大,小于括号..()它弄乱了我的 HTML。

在我花大量时间编写自己的函数之前,我想知道是否有一种简单的方法可以用它们的 ascii 等效项(>、< 等)替换所有出现的这些。我在 RegEx 上很糟糕:/

感谢您的回复。

【问题讨论】:

    标签: php regex preg-replace ascii


    【解决方案1】:

    我相信你正在寻找htmlspecialchars

    此函数会将所有 html 字符替换为其等效的 html 实体。

    例如:

    <?php
    $before="<code>";
    $after=htmlspecialchars($before);
    echo $after; //&lt;code&gt;
    ?>
    

    如果您还想替换单引号,请务必使用 ENT_QUOTES 作为第二个参数。

    【讨论】:

      【解决方案2】:

      htmlentities()htmlspecialchars() 可用,具体取决于您的具体需要。如果你只想破解,&lt;&gt;,你可以这样做

      $new_str = htmlspecialchars($str, ENT_NOQUOTES);
      

      【讨论】:

      • 美丽。实体是我需要的。谢谢。
      【解决方案3】:

      您可以使用 php 的 str_replace 函数。查看http://php.net/manual/en/function.str-replace.php的php手册。

      $text = str_replace('<', '', $text);
      

      此代码通过将 $text 中的小于号替换为空字符串来删除它。

      不过,我强烈建议您使用 preg_replace() 探索正则表达式方法。它更快、更强大。

      【讨论】:

      • 对于单个键/值替换,preg_replace 永远不会比 str_replace 快。
      • 你是对的,但听起来提问者会替换一大堆字符。
      • 糟糕,我好像读错了问题。我以为你在删除字符。函数 htmlspecialchars 或 htmlentities 是用 HTML 等效项替换字符的方法,除非您遇到这些函数不支持的字符。然后使用 str_replace。
      猜你喜欢
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 2014-12-30
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多