我试图从这样的字符串中提取:
$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);
但它不起作用。它的输出与输入相同。
你能帮我吗?
问题就\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];
要替换使用此模式和空字符串作为替换字符串 in preg_replace
。
更好的模式是使用 POSIX 字符类。它将匹配任何其他语言环境的任何类型数字字符。
/[[:digit:]]+[[:space:]]*-[[:space:]]*[[:digit:]]+/
如果要替换字符串:
<?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);
?>