当前位置: 首页 > 面试题库 >

PHP中的未知修饰符“ /”错误

景阳曜
2023-03-14
问题内容

preg_replace(‘/http:///ftp:///', ‘https://’, $value);

http://ftp://$value应改为https://

代码给出错误:

preg_replace() [function.preg-replace]: Unknown modifier '/'

什么是此任务的真正正则表达式?


问题答案:

尝试使用其他定界符,例如#

preg_replace('#http://|ftp://#', 'https://', $value);

或(不建议使用)对正则表达式中每次出现的定界符进行转义:

preg_replace('/http:\/\/|ftp:\/\//', 'https://', $value);

另外,您正在搜索http:///ftp://的确没有太大意义的模式,可能就是您的意思http://|ftp://

您可以将正则表达式缩短为:

preg_replace('#(?:http|ftp)#', 'https', $value);

了解错误: Unknown modifier '/'

在您的regex中'/http:///ftp:///',第一个/视为开始定界符,/之后的:被视为结束定界符。现在我们知道可以为正则表达式提供修饰符以更改其默认行为。一些这样的修饰符是:

  • i :使匹配的大小写不敏感
  • m :多行搜索

但是PHP在结束定界符之后看到的是另一个,/并试图将其解释为修饰符,但失败了,从而导致错误。

preg_replace 返回更改后的字符串。

$value = 'http://foo.com';
$value = preg_replace('#http://|ftp://#', 'https://', $value);
// $value is now https://foo.com


 类似资料:
  • 问题内容: 好吧,所以我目前正在解析RSS feed。我已经获得了我没有问题的数据,剩下的只是解析游戏名称。 这是我当前拥有的代码(忽略草率,这只是概念的证明): 一切都很好,但是随后我开始出现此错误: 我剩下的唯一一件事就是剔除结束锚标签和句点,但是我似乎无法弄清楚为什么它不喜欢’+’。有任何想法吗? 编辑:这不应被标记为重复,因为在另一个问题问了两年之前就被问到了。 问题答案: 您需要在PHP

  • 这是我尝试使用的正则表达式: 我在这个网站上找到了它,当我在那里试用它时,它的效果很好。但当我将其放入代码中时,我会得到这样的消息: 有谁能解释一下哪里出了问题,为什么它是在那个网站上工作的,而不是在我的代码中?

  • 问题内容: 我有以下错误: 警告:preg_replace():第38行上xxx.php中的未知修饰符’]’ 这是第38行的代码: 我该如何解决这个问题? 问题答案: 为什么会发生错误 在PHP中,正则表达式需要包含在一对定界符内。分隔符可以是任何非字母数字,非反斜杠,非空格字符;,,是最常用的。需要注意的是,还可以使用支架风格分隔符在打开和关闭括号开始和结束的分隔符,即,等等都是有效的。 在以下

  • 问题内容: 这个问题已经在这里有了答案 : [警告:preg_replace():未知修饰符“]” ](file:///C:/questions/20705399/warning-preg- replace-unknown-modifier) (3个答案) 11个月前关闭。 当我写以下内容时,我得到这样的警告,它与任何内容都不匹配,但是我敢肯定,其中包含… 为什么我会收到这样的警告消息? 谢谢 问

  • 问题内容: 我正在尝试使用preg_match返回页面源代码中所有包含在“”中的URL。 我正在使用的代码是 我收到以下错误: 问题答案: preg_match(‘~”http://(.*)”~iU’, $code, $matches); 您的问题是您需要使用定界符(我选择〜)来与模式一起使用。有关更多信息,请参见preg_match()手册页。

  • 本文向大家介绍写出你知道的表单修饰符和事件修饰符相关面试题,主要包含被问及写出你知道的表单修饰符和事件修饰符时的应答技巧和注意事项,需要的朋友参考一下 事件修饰符.stop .prevent .capture .self .once .passive 表单修饰符.number .lazy .trim