【问题标题】:Replace last slash in string php替换字符串php中的最后一个斜杠
【发布时间】:2013-01-27 19:28:53
【问题描述】:

我很难绕过正则表达式,我正在尝试删除字符串中的最后一个正斜杠:

$public_url = "https://api.mongohq.com/";

我打算删除最后一个正斜杠并将其替换为其他内容。我想我可以使用preg_replace,但我找不到合适的模式。

【问题讨论】:

  • @JonHulka ~ 我正在寻找一个正则表达式,这样我就可以用一些东西代替而不是在字符串的末尾添加:)
  • "有些人在遇到问题时会想'我知道,我会使用正则表达式'。现在他们有两个问题。”
  • @nkr ~ 你是对的 :)) 我从来没有时间坐下来学习 RegEx :|我希望我会尽快

标签: php preg-replace


【解决方案1】:

你可以使用否定的lookafter-expression:

<?php
$public_url = "https://api.mongohq.com/";
$replace = "foobar";

echo preg_replace("~\/(?!.*\/)~", $replace, $public_url);
?>

输出:
https://api.mongohq.comfoobar

更新:
使用以下正则表达式来避免最后一个斜杠后面的字符出现问题:

echo preg_replace("~\/(?!.*\/)(.*)~", $replace, $public_url);

最后一个斜杠后面的所有字符也会被替换。感谢 knittl!

【讨论】:

  • 顺便说一句:问题已经回答:stackoverflow.com/questions/7790761/…
  • 这也将匹配 https://api.mongohq.com/abc - 不确定这是否是预期的行为:codepad.org/OvUFHdU8
  • 感谢您的评论。我更新了我的答案,以便斜线后面的所有字符也将被替换
  • @Freeddy:我仍然不确定这是 OP 想要的。但这个问题的措辞不是 100% 正确的,你的答案也被接受了,所以也许我假设有问题。
【解决方案2】:

$ 在字符串末尾锚定正则表达式模式:

$public_url = preg_replace('#/$#', 'replace it!', $public_url);

也可以:

$public_url = rtrim($public_url, '/').'replace it!';

【讨论】:

  • 这是我得到的:preg_replace(): Unknown modifier '$' in C:\Users\rgr\Apache\htdocs\Roland Groza [ 3.0 ]\class\mongohq\mongohq.php on line 230
  • @Roland:它对我有用。我没有收到该错误(带有或不带有斜杠):codepad.org/UMD5xpgA
猜你喜欢
  • 2014-02-19
  • 2011-11-23
  • 2018-02-27
  • 2016-05-27
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多