2

私は、TVRage APIクラスを介してランチャースタイルのアプリを拡張し、ユーザーがどこにいても結果を返すPHPベースのアプリケーション拡張機能に取り組んでいます。これは、Alfred App(alfredapp.com)を介して行われます。

ショー名の後にS##E ##を含める機能を追加したいと思います。例:Mike&Molly S01E02

ショー名は変更される可能性があるので、そこで止めることはできませんが、S ##E##をショー名から分離したいと思います。これにより、その情報を使用してAPIを介して検索を続行できます。さらに良いことに、数字を取得する方法があり、SとEの間の数字(例01)とEの後の数字(例02)だけが完璧です。

最高の関数はstrpos、文字列内の文字列を検索することです。これを正しく行うには、正規表現を使用する必要があると思います。それは私にを残すでしょうpreg_match。それは私を導きました:

$regex = ?;
preg_match( ,$input);

問題は、正規表現を書くのに十分な理解がないことです。ショー名をS##E ##から分離したり、2つの別々の数字だけを取得したりするために、どの正規表現を使用できますか?

また、正規表現を教えるのに適した場所があれば、それは素晴らしいことです。

ありがとう!

4

2 に答える 2

2

それを裏返してstrrpos、文字列の最後のスペースを探すために使用し、次に、substr見つけた位置に基づいて2つの文字列を取得するために使用できます。

例:

$your_input = trim($input);    // make sure there are no spaces at the end (and the beginning)
$last_space_at = strrpos($your_input, " ");
$show = substr($your_input, 0, $last_space_at - 1);
$episode = substr($your_input, $last_space_at + 1);
于 2013-03-19T20:34:26.293 に答える
1

正規表現:

$text = 'Mike & Molly S01E02';
preg_match("/(.+)(S\d{2}E\d{2})/", $text, $output);
print_r($output);

出力:

Array
(
    [0] => Mike & Molly S01E02
    [1] => Mike & Molly 
    [2] => S01E02
)

数字を個別に使用する場合:

$text = 'Mike & Molly S01E02';
preg_match("/(.+)S(\d{2})E(\d{2})/", $text, $output);
print_r($output);

出力:

Array
(
    [0] => Mike & Molly S01E02
    [1] => Mike & Molly 
    [2] => 01
    [3] => 02
)

説明:

。->すべての文字に一致

。+->すべての文字を1回以上一致させる

\d->数字に一致

\ d{2}-> 2桁に一致

括弧は結果をグループ化するためのものです。

www.regular-expressions.infoは、正規表現を学ぶのに適した場所です。

于 2013-03-19T21:38:29.920 に答える