用正则表达式修剪一个字符串

时间:2014-09-08 23:39:34

标签: php regex

我有这些字符串:

Sexy too! -----Original Message----- From: djsgsgjdigjdisgjdigjdis Sent: Tuesday, 09    September 2

heyp -----Original Message----- From: rejgisdgifdogdsgdsgds Sent: Tuesday, 09 September 2

Sexy too! -----Original Message----- From: fdkfdgkifdjgfidsjgidjgdsgdgs Sent: Tuesday, 09 September 2

但是我想在-----Original Message-----位之后裁剪它们,所以它们只是简单的单词(heyp,性感也是等等)?

我尝试使用str_replace,但它没有用。

如何在PHP中使用preg_replace执行此操作?

4 个答案:

答案 0 :(得分:0)

您可以使用preg_replace,但不需要。请考虑改为使用substrstrpos

$separatorIndex = strpos($originalMessage, '-----Original Message-----');
if ($separatorIndex !== false) {
    $originalMessage = substr($originalMessage, 0, $separatorIndex);
}

echo $originalMessage;

答案 1 :(得分:0)

以下内容将为您提供从$matches部分字符串前面解析的-变量中的匹配项。

$re = "/(?:(.*)\\s+-+.*)/"; 
$str = "Sexy too! -----Original Message----- From: djsgsgjdigjdisgjdigjdis Sent: Tuesday, 09    September 2\n\nheyp -----Original Message----- From: rejgisdgifdogdsgdsgds Sent: Tuesday, 09 September 2\n\nSexy too! -----Original Message----- From: fdkfdgkifdjgfidsjgidjgdsgdgs Sent: Tuesday, 09 September 2"; 

preg_match_all($re, $str, $matches);

答案 2 :(得分:0)

由于您正在处理文字子字符串,因此更快的方法是使用explode:

$result = explode(' -----Original Message----- ', $line, 2)[0]; // PHP >= 5.4

或旧的PHP版本:

list($result,) =  explode(' -----Original Message----- ', $line, 2);

答案 3 :(得分:0)

您可以使用preg_replace这样做。

$string = preg_replace('/\s*-----Original Message-----.*/', '', $string);

或者您可以使用substr

$string = substr($string, 0, strpos($string, ' -----Original Message-----'));