php - PHP 中的未知修饰符 '/' 错误

标签 php regex preg-replace

<分区>

preg_replace('/http:///ftp:///', 'https://', $value);
$value 中的

http://ftp:// 应替换为 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 '/'

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

  • i : 制作匹配案例 不敏感
  • m : 多行搜索

但是 PHP 在结束分隔符之后看到的是另一个 /并尝试将其解释为修饰符但失败,导致错误。

preg_replace返回更改后的字符串。

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

关于php - PHP 中的未知修饰符 '/' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3719915/

相关文章:

php - 如何在日期和月份不带前导零的情况下验证日期?

php - 自动完成无法获得单词的精确搜索查询

javascript - 使用正则表达式将文本解析为对象

html - 如何从 HTML 文档中删除表格?

php - 处于休眠状态的高 Mysql 连接 + 大量运行的 PHP 实例/Magento

php - MySQL-PHP : Calculate total hours in a day between multiple events

regex - 正则表达式 - 不是任何其他单词

php - 将关联数组与 preg_replace 结合使用

php - 如何用正则表达式替换具有相同字符数的多个字符?

php - 在 PHP 中将纯文本 URL 转换为 HTML 超链接