次のような文字列から抽出しようとしています。
$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];
置換するには、このパターンと空の文字列をの置換文字列として使用します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);
?>