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

置換するには、このパターンと空の文字列をの置換文字列として使用します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 に答える