我正在尝试从这样的字符串中提取:
$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);
但它不起作用。它的输出与输入相同。
你可以帮帮我吗?答案 0 :(得分: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];
要替换使用此模式并将空字符串替换为preg_replace
中的替换字符串。
更好的模式将使用POSIX字符类。它匹配任何其他语言环境的任何类型的数字字符。
/[[:digit:]]+[[:space:]]*-[[:space:]]*[[:digit:]]+/
答案 1 :(得分: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);
?>