获取字符前后的特定字符串
Get a specific String After and Before a character
例如,如果我有一个字符串
$string = 'haircut-with-shampoo-and-style-from-vibe-styling-salon';
我还有另一个字符串或字符,例如
$string2 = 'sh'
现在我想得到准确的
$finalstr = 'shampoo'
通过替换“-”中的上一个和下一个字符串。
有办法吗?但是我做不到。
$string
是否总是用“-”切入 "parts"?您是否在寻找匹配特定前缀的词?
如果是,你可以用$string
组成一个数组:
$array = explode("-", $string);
然后迭代 $array 以将您的前缀与存储在 $array 中的每个单词进行比较(您可能需要 REGEX)
如果您要查找以 sh
开头且被 -
包围或位于字符串开头或结尾的内容,可以使用以下一种方法:
preg_match("/(\b|-)(sh[^\b-]+)(\b|-)/", $string , $match);
$finalstr = $match[2];
另一种选择是结合使用 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;
例如,如果我有一个字符串
$string = 'haircut-with-shampoo-and-style-from-vibe-styling-salon';
我还有另一个字符串或字符,例如
$string2 = 'sh'
现在我想得到准确的
$finalstr = 'shampoo'
通过替换“-”中的上一个和下一个字符串。
有办法吗?但是我做不到。
$string
是否总是用“-”切入 "parts"?您是否在寻找匹配特定前缀的词?
如果是,你可以用$string
组成一个数组:
$array = explode("-", $string);
然后迭代 $array 以将您的前缀与存储在 $array 中的每个单词进行比较(您可能需要 REGEX)
如果您要查找以 sh
开头且被 -
包围或位于字符串开头或结尾的内容,可以使用以下一种方法:
preg_match("/(\b|-)(sh[^\b-]+)(\b|-)/", $string , $match);
$finalstr = $match[2];
另一种选择是结合使用 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;