我正在寻找一种方式写在只有一个preg_replace
简单的regex不
$url = "stackoverflow";
if(!preg_match('/apple/',$url)){
$url = $url.".apple.com";
}
我正在寻找一种方式写在只有一个preg_replace
简单的regex不
$url = "stackoverflow";
if(!preg_match('/apple/',$url)){
$url = $url.".apple.com";
}
$str = 'something';
echo preg_replace('/^(?:(?!apple).)*$/is', '$0.apple.com', $str);
PS如下:修饰符is
可能是有用的。
(?:)*
使得非捕获模式。它匹配零个或多个(?!apple)
的实例。当模式匹配时,除apple
和$0
之外的任何东西都告诉取整串。上述示例并不相同,因为当字符串不以apple
开头时,它会匹配任何内容,因为?!apple
条件仅在字符串的开始处应用一次。
你想完成什么?你想要像“stackoverflow.com.apple.com”这样的网址吗? – 2012-01-30 22:19:27
让我们说没有TLD的url =“stackoverflow” – ThomasReggi 2012-01-30 22:20:06
Err你的问题没有意义。字符串是否总是以苹果结尾?如果没有,那么你不能使用正则表达式追加到一个字符串。 – CBusBus 2012-01-30 22:21:07