Dan*_*cia 1 php regex string url preg-replace
我正试图取代:
*facebook.com/
用http://graph.facebook.com/
我需要能够将facebook.com部件之前的任何内容分组到可选组中.
我不能代替facebook.com用graph.facebook.com,因为输入网址可能包含https.
这就是我所拥有的,但却错过了任何没有的东西http[s]://.
<?php
$fb_url = preg_replace('/http[s]*:\/\/[www.]*facebook.com\//', 'http://graph.facebook.com/', 'facebook.com/some/segments');
echo $fb_url;
?>
Run Code Online (Sandbox Code Playgroud)
专门解决您的问题:您可以通过?在正则表达式中添加后面的任何单个字符(或一组字符)来使其可选.
查看代码的几个提示:
/字符的字符串,请使用不同的分隔符(例如#)简化您的生活.您不需要使用正斜杠..点元字符,因为它匹配任何单个字符,所以你的表达式www.可以想象匹配www9或沿着这些行的任何其他东西[...]用于匹配一系列字符.如果你想特别匹配文本www.你应该使用一个非捕获组,(?:www\.)并通过添加它?之后使其成为可选组(?:www\.)?所以,记住这些提示,试试......
<?php
$p = '#(?:https?://(?:www\.)?)?facebook\.com/#';
$r = 'http://graph.facebook.com/';
$subject = 'facebook.com/some/segments';
$fb_url = preg_replace($p, $r, $subject);
echo $fb_url; // outputs: http://graph.facebook.com/some/segments
?>
Run Code Online (Sandbox Code Playgroud)