0

在php中剥离左右字符的最佳方法是什么?我有它剥离权利,但无法弄清楚左边。我尝试了 ltrim,但似乎效果不佳。

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

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

我需要剥离剩下的[#所有东西,所以我只剩下4152.

4

3 回答 3

4

有几种方法可以做到这一点,但最好使用正则表达式。这个行为与您当前的代码完全一样:找到右方括号并隔离它之前的所有连续数字。

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

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

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

看到它在行动

于 2012-08-30T22:32:19.400 回答
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);

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

于 2012-08-30T22:33:13.657 回答
0

用 ltrim 剥离那些你需要这样写:

$rawsubject = ltrim($rawsubject, "RE:[# ");
于 2012-08-30T22:36:16.977 回答