【问题标题】:How to use ' in a single quoted string?如何在单引号字符串中使用'?
【发布时间】:2012-01-25 21:55:57
【问题描述】:

我将以下内容用于preg_replace

$replace = '/[!\/."",#\s\-:?"]+/';

例如,当我尝试在上面添加 ' 时,它会给我一个文件错误:

解析错误:语法错误,第 38 行 .../s.php 中的意外 T_NS_SEPARATOR

另外,有没有更简单的方法列出所有要替换的符号?

【问题讨论】:

  • 解析错误:语法错误,第 38 行 /home/##/s.php 中的意外 T_NS_SEPARATOR
  • .....第 38 行的代码是什么?
  • 为什么要放3倍的符号“?
  • 我基本上只想要类似的东西!"£$%^&*()_+=|\.?/~#'@;:{}[]
  • <?php $replace = '/[!\/."",#\s\-:?"]+/'; ?> 放入文件并在命令行上运行它(通过php)不会产生语法错误。请发布更多代码。

标签: php syntax-error parse-error


【解决方案1】:

如果您想摆脱任何符号,请尝试:

$replace = "/[^a-zA-Z0-9 ]/";

^ 表示“除以下之外的任何内容”。将您想要允许的任何字符添加到列表中。这比列出每个符号并不得不处理转义要容易。

【讨论】:

  • - 添加到允许的字符列表中。把它放在字符类的末尾,这样你就不需要转义了。
  • 你能举个例子吗?
  • 然后从允许的字符中删除空格。这很简单;)
  • @JackTheJack:你实际上有两个问题。第一个问题是解决代码产生的语法错误。第二个问题是如何创建 URL。第一个问题是解决第二个问题的结果,但是您可能想在解决第一个问题之后再问第二个问题。把事情分开以获得更好的答案。还要改进你的问题的写作,使它们更精确(例如,我添加了错误消息,你应该直接提供这些重要的东西,以便清楚你的问题)。
【解决方案2】:

您需要转义 ' 字符,因为它也是单引号字符串的分隔符:

$replace = '/[!\/.,#\s\-:?"\']+/';
                           ^^

转义是通过在它前面添加\ 来完成的。这通常是合乎逻辑的,否则您将完成字符串定义,然后导致语法错误(PHP 无法解析您的代码)。见Single quoted String­Docs

有没有更简单的方法列出所有要替换的符号?

仅仅列出它们还不够简单(就像您已经做过的那样)?所以我必须承认我不清楚你真正关心的是什么,所以我不能提供更简单的东西。

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2021-09-08
    相关资源
    最近更新 更多