php - 在第二次出现一个字符之后和最后一次出现相同字符之前返回一个字符串与php

标签 php string substr strpos

我有几个类似于下面的字符串: ORG-000012 – 变体名称 – 数量:12 包 – 14.95 美元

我需要用 php 删除第二个连字符之前和最后一个连字符之后的所有字符。例如,上面的字符串需要返回为: 变体名称 – 数量:12 包

我曾尝试使用 strpos 和 substr,但我似乎无法获得正确的设置。请帮忙!

最佳答案

可以找到-第一次出现的位置字符使用 strpos并使用 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

它所做的是,它将打印 $s 的子字符串从第一次出现 - 后的一个字符开始字符,并省略最后一次出现的字符 -通过将负值(字符串总长度与最后一次出现 - 字符的位置之差)作为长度传递给 substr .

请注意,这将打印最后一个 - 之前的空格字符同样,所以你可能想要 trim结果也是如此。

关于php - 在第二次出现一个字符之后和最后一次出现相同字符之前返回一个字符串与php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46268571/

相关文章:

php - 标题 php 不起作用

sql - Oracle SQL : Is it possible using SUBSTR and INSTR to return ALL Strings in a given text field?

php - MySQL 查询 : query the PRODUCTS table (among others) and bring up BOTH the category AND subcategory

Ruby 字符串处理

javascript - 比较jquery中的相似字符串

java - 重命名 zip 文件中的重复文件 Java

mysql - 更新中间位被零屏蔽的列

r - 根据现有变量的前 7 个字符创建一个新变量

php - CakePHP 3.x - fixture 导入不加载数据

php - 解压 8 字节整数