[英]php string function to get substring before the last occurrence of a character
[英]Returning a string after the second occurrence of a character and before the last occurrence of the same character with php
我有几个类似于以下的字符串:ORG-000012 - 变异名称 - 数量:12包 - 14.95美元
我需要在第二个连字符之前和最后一个连字符之后删除所有字符。 例如,上面的字符串需要返回为:变体名称 - 数量:12包
我试过使用strpos和substr,但我似乎无法得到正确的设置。 请帮忙!
只需使用explode()
,按–
分割即可。 然后,获取第二个和第三个元素:
<?php
$description = "ORG-000012 – Name of variation – Quantity: 12 Pack – $14.95";
$descriptionArray = explode(" – ", $description);
$finalDescription = $descriptionArray[1]." – ".$descriptionArray[2];
var_dump($finalDescription); // string(39) "Name of variation – Quantity: 12 Pack"
或者,如果其间的元素数是可变的,则array_shift()
和array_pop()
数组将删除第一个和最后一个元素:
<?php
$description = "ORG-000012 – Name of variation – Quantity: 12 Pack – $14.95";
$descriptionArray = explode(" – ", $description);
array_pop($descriptionArray);
array_shift($descriptionArray);
var_dump($descriptionArray);
您可以使用strpos
找到第一次出现的字符-
char的位置,并使用strrpos
查找最后一次出现的位置:
$s = 'ORG-000012 - Name of variation - Quantity: 12 Pack - $14.95';
$sub = substr($s,strpos($s, '-')+1, strrpos($s, '-')-strlen($s));
print $sub; // or print trim($sub) to remove the whitespaces
它所做的是,它会打印的substrinig $s
的第一次出现之后,从一个字符开始-
字符,并忽略从最后出现的字符-
通过传递一个负值字符串的总长度和位置的最后的(差出现-
字符)作为substr
长度。
请注意,这将在最后一个之前打印空格字符-
因此您可能还想trim
结果。
可以使用reg expr,尝试使用:
preg_match(
'/(?<=\s–\s)(.*)(?:\s–\s)[^\s]+$/',
'ORG-000012 – Name of variation – Quantity: 12 Pack – $14.95',
$matches
);
echo $matches[1]; //Name of variation – Quantity: 12 Pack
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.