【问题标题】:PHP Regex: how to remove some of the words in the linkPHP Regex:如何删除链接中的某些单词
【发布时间】:2015-09-30 00:46:30
【问题描述】:

这是我的第一篇文章。我已经尝试了几天但没有成功。

案例:我想从这个链接“http://www.amazon.com/Mindfulness-Be-mindful-Live-moment/dp/0857084445/ref=sr_1_1?s=books&ie=UTF8&qid=1443534574&sr=1-1&keywords=Mindfulness+Be+Mindful+Live+In+The+Moment”中删除链接中的一些文字

这是我的代码

<?php 
$s = 'http://www.amazon.com/Mindfulness-Be-mindful-Live-moment/dp/0857084445/ref=sr_1_1?s=books&ie=UTF8&qid=1443534574&sr=1-1&keywords=Mindfulness+Be+Mindful+Live+In+The+Moment';
preg_match("/http:/(.*)//", $s, $results);
echo $results[0];
?>

不支持 substr 函数,因为链接是动态的。 我想使用 php 正则表达式保留“0857084445”。你的解决方案真的帮助了我。谢谢

【问题讨论】:

  • 您希望脚本的确切输出是什么? http://www.amazon.com/Mindfulness-Be-mindful-Live-moment/dp/0857084445/ 或仅0857084445
  • 我想看看这个问题的答案
  • 让我知道这部分是否始终保持不变? http://www.amazon.com/Mindfulness-Be-mindful-Live-moment/dp/
  • 数字是否总是在同一个地方,是否会在 / 上使用 explode() 并访问相关键来完成这项工作?
  • 否,但始终使用此模式amazon.com/xxxx/dp

标签: php regex


【解决方案1】:

您应该使用匹配 2 / 之间的每个数字的正则表达式 #/(\d+)/#i

不仅您的正则表达式错误,而且结果的输出也是错误的。因为$results[0] 包含匹配的字符串。 $results[1]第一个捕获的组等等..

这是更正后的代码

<?php 
$s = 'http://www.amazon.com/Mindfulness-Be-mindful-Live-moment/dp/0857084445/ref=sr_1_1?s=books&ie=UTF8&qid=1443534574&sr=1-1&keywords=Mindfulness+Be+Mindful+Live+In+The+Moment';
preg_match('#/(\d+)/#', $s, $results);
echo $results[1];
?>

【讨论】:

  • 它会输出0857084445,但是如果链接或数字位置发生变化,那么它会给你错误的输出
  • 主题标签是什么?
  • 无论如何,如果您在此数字之前的文本中有一个数字,它将不起作用,您应该改用'/dp\/(\d+)\//'
  • # 符号是正则表达式分隔符,与 / 相同。但是使用# 你不应该转义/,因此正则表达式很容易阅读。顺便说一句,它适用于两个 / 之间的每个数字(试试看)。不需要更改正则表达式。
  • 你是对的。但是为什么要使用不区分大小写的模式呢?
【解决方案2】:

如果您的问题仅与显示目的有关,那么执行此类操作会容易得多,因为不需要正则表达式。

<?php
$s = 'http://www.amazon.com/Mindfulness-Be-mindful-Live-moment/dp/0857084445/ref=sr_1_1?s=books&ie=UTF8&qid=1443534574&sr=1-1&keywords=Mindfulness+Be+Mindful+Live+In+The+Moment';
?> <a href="<?php echo $s?>"> Whatever you want here</a>

编辑:如果我有 50 个代表,我会问它是否仅在 cmets 部分显示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多