特定の文字列の先頭にダッシュがあるすべての単語を本質的に抽出するために、どのような正規表現を使用できるか疑問に思っています。これを使用して、ユーザーが Web サイトの検索結果から特定の単語を省略できるようにします。
たとえば、私が持っているとしましょう
$str = "this is a search -test1 -test2";
ダッシュがすぐ前にあるため、保存して配列"test1"
に保存しようとしています。"test2"
誰か助けてくれませんか
次のパターンを使用します/\-(\w+)/
。例:
$string = 'this is a search -test1 -test2';
$pattern = '/\-(\w+)/';
if(preg_match_all($pattern, $string, $matches)) {
$result = $matches[1];
}
var_dump($result);
出力:
array(2) {
[0] =>
string(5) "test1"
[1] =>
string(5) "test2"
}
説明:
/.../ delimiter chars
\- a dash (must be escaped as it has a special meaning in the regex language
(...) special capture group. stores the content between them in $matches[1]
\w+ At least one ore more word characters
これは仕事をします:
<pre><?php
$string = 'Phileas Fog, Passe-Partout -time -day -@StrAn-_gE+*$Word²²²';
preg_match_all('~ -\K\S++~', $string, $results);
print_r($result);