1

Notepad ++正規表現をPHP正規表現に変換しようとしています。この正規表現は、基本的に次の形式のURLのリストからIDを取得します。

http://www.example.com/category-example/1371937-text-blah-blah-blah-2012.html
http://www.example.com/category-example/1471337-text-blah-blah-2-blah-2010.html

Notepad ++正規表現関数を使用して、2つのステップで必要な出力を取得します(コンマ区切りのIDのリスト)

(。*)/スペースに置き換えます

-(。*)カンマに置き換えます

結果:1371937,1471337

PHP preg_replaceで同様のことをしようとしましたが、正しい正規表現を取得する方法がわかりません。次の例では、数字以外のすべてが削除されますが、IDに属していない数字も存在する可能性があるため、期待どおりに機能しません。

$bb =   preg_replace('/[^0-9]+/', ',', $_POST['Text']);

?>

正しい構造はどれですか?

ありがとう

4

2 に答える 2

1

照合する場合:

http://www.example.com/category-example/1371937-text-blah-blah-blah-2012.html

取得するため:

1371937

するでしょう:

$url = "http://www.example.com/category-example/1371937-text-blah-blah-blah-2012.html";
preg_match( "/[^\d]+(\d+)-/", $url, $matches );
$code = $matches[1];

.. 数字以外のすべての文字に一致し、次に「-」に達するまで連続した数字の文字列に一致します

于 2012-05-20T01:02:06.000 に答える
0

preg_matchID を検索するだけの場合は、 ではなくを使用する必要がありますpreg_replace

パターンのオプションが失われました。最も単純なものは次のとおりです。

$url = 'http://www.example.com/category-example/1371937-text-blah-blah-blah-2012.html';
preg_match('/\d+/', $url, $matches);
echo $matches[0];

これは、URL 内の最初の一連の数字を見つけるだけです。これは例で機能します。

于 2012-05-20T01:12:30.777 に答える