剥离字符的左右

时间:2012-08-30 22:28:12

标签: php

在php中删除字符左右两边的最佳方法是什么?我把它剥离了,但不能弄清楚左边。我试过ltrim,但它似乎没有奏效。

$rawsubject = 'RE: [#4152] - Registration Issues';
$casenumber_param="]";
$casenumber_strip = strpos($rawsubject,$casenumber_param);
$casenumber = substr($rawsubject,0,$casenumber_strip);

目前的输出是:RE: [#4152

我需要删除[#左边的所有内容,以便我留下的只有4152

3 个答案:

答案 0 :(得分:4)

有几种方法可以做到这一点,但如果你选择regular expression,这可能是最好的。这个行为与您当前的代码完全相同:找到结束方括号并隔离它前面的所有连续数字。

if (preg_match('/\d+(?=\])/', $rawsubject, $matches)) {
    $casenumber = $matches[0];
}

你很可能更喜欢更直接的东西,例如“抓住方括号之间的数字”:

if (preg_match('/\[#(\d+)\]/', $rawsubject, $matches)) {
    $casenumber = $matches[1];
}

<强> See it in action

答案 1 :(得分:0)

当前代码的逻辑扩展只是为了做另一面:

$rawsubject = 'RE: [#4152] - Registration Issues';
$casenumber_start="#";
$casenumber_end="]";
$start = strpos($rawsubject,$casenumber_start)+1;
$end  = strpos($rawsubject,$casenumber_end);
$casenumber = substr($rawsubject,$start,$end-$start);

但我会选择基于正则表达式的解决方案。

答案 2 :(得分:0)

剥离那些带有ltrim的东西你需要这样写:

$rawsubject = ltrim($rawsubject, "RE:[# ");