1

我试图从这样的字符串中提取:

$message = #porrabarça per avui @RTorq el  @FCBar guanyarà per 3-1 al AC Milan

'3-1'。作为数字 - 数字

我试过了

$message = preg_replace('/[0-9]\s*-\s[0-9]/i', '', $message);

但它不起作用。它的输出与输入相同。

你能帮我吗?

4

2 回答 2

6

问题就\s在这里。

/[0-9]\s*-\s[0-9]/
           ^
           |
           +--- This makes a single space mandatory. 

你需要\s*那里。用来提取preg_match任何东西。preg_match匹配并可选择将匹配设置为变量。从那里您可以提取匹配项。preg_replace替换匹配的内容。

preg_match("/\d+\s*-\s*\d+/", $message, $match);
$num = $match[0];

http://ideone.com/BWKZQV

要替换使用此模式和空字符串作为替换字符串 in preg_replace

更好的模式是使用 POSIX 字符类。它将匹配任何其他语言环境的任何类型数字字符。

/[[:digit:]]+[[:space:]]*-[[:space:]]*[[:digit:]]+/
于 2013-01-22T08:47:35.553 回答
1

如果要替换字符串:

<?php  
$message="#porrabarça per avui @RTorq el  @FCBar guanyarà per 3-1 al AC Milan";

echo $message = preg_replace('/[0-9]+-[0-9]+/', '', $message);

?>

如果您想获得匹配的组:

<?php  
$message="#porrabarça per avui @RTorq el  @FCBar guanyarà per 3-1 al AC Milan";

preg_match_all('/[0-9]+-[0-9]+/', $message, $matches);

print_r($matches);

?>
于 2013-01-22T08:49:10.367 回答