这是一个字符串示例:abcde123#ijklmn0pq
在该字符串中,我只需要打印出数字(123
序列),然后删除字母(左右两侧)和主题标签(#
)已删除。
主题标签(#
)始终包含在字符串中。
主题标签(#
)始终位于需要打印的字符的右侧;
主题标签(#
)始终位于需要删除的字符的左侧;
因此,主题标签(#
)可用作删除右侧字母的指南
开头的字符数始终等于5(常数)(要删除);
中间的字符数总是不同(可变)(要打印);
右侧字符的数量始终不同(可变)(要删除);
这是另一个字符串示例,类似于第一个:!!@@$IMPORTANT#=-=whatever
需要打印的字符是“IMPORTANT
”
与第一个示例一样,需要打印标签(#)左侧的内容,但重要的是只打印“IMPORTANT
”字,而不是特殊字符“!! @@ $”。
答案 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
第一种模式说明:
^.{5}
:匹配$string
(.*)
:匹配#
(第一个捕获组)第一次出现之前(1)之后的任何N个字符#.*$
:匹配#
以及$string
第二种模式说明:
$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