php - 如何使用正则表达式 php 替换 url

标签 php regex

我有一个文本文件,其中有很多像这样的 url http://96.156.138.108/i/01/00382/gbixtksl4n0p0000.jpg#xywh=0,0,108,60

我想用我的网址更改所有网址 http://testing.to/testing/vtt/vt1.vtt#xywh=0,0,108,60

我正在使用这个正则表达式

$result = preg_replace('"\b(https?://\S+)"', 'http://testing.to/testing/vtt/vt1.vtt', $result);

但它不能很好地改变整个 url

来自这个http://96.156.138.108/i/01/00382/gbixtksl4n0p0000.jpg#xywh=0,0,108,60

到这个http://testing.to/testing/vtt/vt1.vtt

除了 #xywh==0,0,108,60 之外,我只想更改 url

http://testing.to/testing/vtt/vt1.vtt#xywh==0,0,108,60

最佳答案

您可以使用 [^\s#] 而不是 \S 来匹配非空格、非 # 字符:

$result = preg_replace(
    '"\bhttps?://[^\s#]+"',
    'http://testing.to/testing/vtt/vt1.vtt',
    $result
);

关于php - 如何使用正则表达式 php 替换 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34330175/

相关文章:

javascript - 如何从 PostgreSQL 条件字符串中提取按参数索引排序的列名数组?

java - 如何在 Java 中格式化非纯日期?

regex - 为什么这两个RegEx基准测试有如此大的差异?

RegEx 不超过 2 个相同的连续字符以及 a-Z 和 0-9

php - Symfony2 $user->setPassword() 将密码更新为纯文本 [DataFixtures + FOSUserBundle]

php - 忽略更新功能 Laravel 5 的唯一验证

php - 由于链接资源无效,MySQL 连接失败

regex - 如果后跟小写,则 Sublime 正则表达式更改\n 为空格

php - 更改 URL 基本名称

PHP is_readable() 在可读 samba 目录上失败