使用PHP

时间:2016-10-25 11:25:07

标签: php html regex

所以基本上我得到了像这样的链接

https://dog.example.com/randomgenerated45443444444444
https://turtle.example.com/randomgenerated45443
https://mice.example.com/randomgenerated452
https://monkey.example.com/randomgenerated43232323
https://leopard.example.com/randomgenerated22222222222222222

我想知道是否有可能检测到https://.example.com/之间的单词,这些单词将是随机动物名称。并用" thumbnail"替换它。动物名称和随机生成的字母数量总是随着字母数量的不同而变化

2 个答案:

答案 0 :(得分:1)

您可以使用积极的预测来获取所需的数据:

$string = 'https://leopard.example.com/randomgenerated22222222222222222';
$pattern = '/(?=.*\/\/)(.*?)(?=\.)/';
$replacement = 'thumbnail';
$foo = preg_replace($pattern, $replacement, $string);

$protocol = 'https://';
echo $protocol . $foo;

返回

  

https://thumbnail.example.com/randomgenerated22222222222222222

正则表达式的解释:

积极前瞻?=.*\/\/
断言下面的正则表达式匹配
   .*匹配任何字符(行终止符除外)
   *量词 - 在零和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)
   \/字面匹配字符/(区分大小写)
   \/字面匹配字符/(区分大小写)
第一个捕获小组(。*?)
   .*?匹配任何字符(行终止符除外)
   *?量词 - 在零和无限时间之间匹配,尽可能少,根据需要进行扩展(懒惰)
积极前瞻?=\.
断言下面的正则表达式匹配
   \.匹配角色。字面意思(区分大小写)

答案 1 :(得分:-1)

假设https://example.com永远不会改变,那么这是您可以用于此目的的最简单的正则表达式:

https://(.+)\.example\.com

(.+)中的任何内容都将是您尝试提取的字词。

编辑于2016.10.27:

虽然 /字符在正则表达式中没有特殊含义,但如果您 ,它可能需要转义(\/) >使用它作为表达式分隔符。所以上面的内容如下:

https:\/\/(.+)\.example\.com