在PHP中删除字符串左右两侧的字符

时间:2014-12-30 20:05:20

标签: php

这是一个字符串示例:abcde123#ijklmn0pq

在该字符串中,我只需要打印出数字(123序列),然后删除字母(左右两侧)和主题标签(#)已删除

主题标签(#)始终包含在字符串中。

主题标签(#)始终位于需要打印的字符的右侧;

主题标签(#)始终位于需要删除的字符的左侧;

因此,主题标签(#)可用作删除右侧字母的指南

开头的字符数始终等于5(常数)(要删除);

中间的字符数总是不同(可变)(要打印);

右侧字符的数量始终不同(可变)(要删除);

这是另一个字符串示例,类似于第一个:!!@@$IMPORTANT#=-=whatever

需要打印的字符是“IMPORTANT

与第一个示例一样,需要打印标签(#)左侧的内容,但重要的是只打印“IMPORTANT”字,而不是特殊字符“!! @@ $”。

4 个答案:

答案 0 :(得分:2)

$myString = '!!@@$IMPORTANT#=-=whatever';

$result = substr($myString, 5, -1);

$pos = strpos($result, '#');

$result = substr($result, 0, $pos);

echo $result;

答案 1 :(得分:1)

您可以将正则表达式与preg_replace();

一起使用

假设您需要处理的字符串存储在$string

preg_replace('^.{5}(.*)#.*$', '$1', $string);

https://www.regex101.com/r/hA8lY7/1

第一种模式说明:

  1. ^.{5}:匹配$string
  2. 开头后的任意5个字符
  3. (.*):匹配#(第一个捕获组)第一次出现之前(1)之后的任何N个字符
  4. #.*$:匹配#以及$string
  5. 结束前的(2)后的任意N个字符

    第二种模式说明:

    1. $1:将$string替换为第一个模式中匹配的第一个捕获组

答案 2 :(得分:0)

我对此表示不满。看起来很简单。

function choppy($choppy) {

    $nstr = substr($choppy, 5,strlen($choppy)); //chop first 5
    $pos = strpos($nstr, "#"); //Find the position of the hash tag

    return substr($nstr, 0, $pos); //we only need the stuff before it...
}

echo choppy('!!@@$IMPORTANT#=-=whatever');
echo "\n";
echo choppy('abcde123#ijklmn0pq');

结果

C:\Users\developer\Desktop>php test.php
IMPORTANT
123

答案 3 :(得分:0)

其他答案都很好,但如果你需要一个单行代码来做作业:

$str = '!!@@$IMPORTANT#=-=whatever';

echo substr($str, 5, strpos($str, '#')-5); //IMPORTANT