例如,如果我有一个字符串
$string = 'haircut-with-shampoo-and-style-from-vibe-styling-salon';
我有另一个字符串或字符,如
$string2 = 'sh'
现在我想要完全
$finalstr = 'shampoo'
替换' - '。
中的上一个和下一个字符串有没有这样做?但我无法这样做。
答案 0 :(得分:2)
$string
是否会被切入"部分"用" - " ?您在寻找与特定前缀匹配的单词吗?
如果是,您可以使用$string
撰写数组:
$array = explode("-", $string);
然后迭代$ array来比较你的前缀和存储在$ array中的每个单词(你可能需要REGEX)
答案 1 :(得分:1)
另一种方法是将strstr
和substr
与strpos
结合使用:
$string = 'haircut-with-shampoo-and-style-from-vibe-styling-salon';
$string2 = 'sh';
$finalstr = substr(($str = strstr($string . '-', $string2)), 0, strpos($str, '-'));
echo $finalstr;
旁注:添加的-
仅适用于sa => salon
实例。
这基本上做的是它只是从主弦(段)获得该针的第一次出现,然后从该分段的弦中,它只是将其子串到第一个-
破折号中,从而获得所需的字符串
但是如果你需要在子字符串中匹配多个字符串或匹配,最简单的方法就是爆炸并测试每个字符串:
$string = 'haircut-with-shampoo-and-style-from-vibe-styling-salon-sharon';
$string2 = 'sh';
$finalstr = ''; // $finalstr = array();
foreach(explode('-', $string) as $s) {
if(stripos($s, $string2) !== false) {
$finalstr .= ' ' . $s;
// $finalstr[] = $s;
}
}
echo $finalstr;
// echo implode(' ', $finalstr); // array option
或数组表单版本:
$string = 'haircut-with-shampoo-and-style-from-vibe-styling-salon-sharon';
$string2 = 'sh';
$finalstr = implode(' ', array_filter(explode('-', $string), function($s) use($string2){
return stripos($s, $string2) !== false;
}));
echo $finalstr;
答案 2 :(得分:0)
如果你正在寻找以sh
开头的-
或者字符串的开头或结尾处的内容,这是一种方法:
preg_match("/(\b|-)(sh[^\b-]+)(\b|-)/", $string , $match);
$finalstr = $match[2];