私は自分のルートクラスを作成しようとしています。有効なURLを解析することに熱い問題があります。preg_match-regexpでURLを解析する
これは、URLの例です: http://localhost/app/module/command/i15
そして私は、アレイは、PHPでするpreg_matchを使用して作成する際に、追加要素であると/スラッシュの後にすべての要素が必要です。
数字の検索には、([0-9] +) 文字が含まれている文字列の検索 - または_([^。] +)(ここに問題がありますこのような)
正規表現全体ルックス:それはより多くの美しさになります
0 => app, 1=> module, 2 => command, 3 => i15
するpreg_matchはトンのようなだけで何かが返されます場合:私は5つの要素、そのようなことの配列が欲しい
(app)\/(module)\/([^.]+)\/i([0-9]+)
帽子:(パラメータ識別子としてIなし)
0 => app, 1=> module, 2 => command, 3 => 15
は、誰もが速いこれで私を助けることができますか?私はそれで2日間立ち往生し、正しい解決策を見つけることができません。
EDIT:
/app/contacts/list => (app)\/(contacts)\/([^.]+)
/app/contacts/edit/i15 => (app)\/(contacts)\/([^.]+)\/i([\d]+)
/app/contacts/view/i15-c2 => (app)\/(contacts)\/([^.]+)\/i([\d]+)-c([\d]+)
そして、私は上記のようなさまざまな正規表現を作成し、それらのすべてのために:私は次のように定義済みのいくつかの正規表現を持っている 。問題の星私は間に何か解析する必要がある場合:
/app/contacts/preview/random-name/i15-c2
または
/app/contacts/preview/random-name-i15-c2
([^。] +)もキャッチ\(スラッシュ) - 上記の最初の例では、このスラッシュは正規表現全体を壊しました: - (
EDIT SECOND TIME
:-)私はいくつかのパスのためのいくつかの定義済みの正規表現を持っています。
私はパスでURLを入力した場合:私は、私が欲しいものを知っているが、PHPはそう選択どのユーザー知らない - 私は現在のURLをチェックして、最良の結果と一致し
$regexp = [
[0 => '(app)\/([^/]+)'],
[1 => '(app)\/([^/]+)\/i([0-9]+)']
];
次へ:顔をしていることができます:
アプリ/ユーザー名/ I15
システムは私にその$の正規表現を示し[0]最高の結果である - $の正規表現は、[1]最高ですので、それは、真実ではないものを。
これは私の問題を説明してくれることを願っています。
[PHPでHTML/XMLをどのように解析して処理するのですか?](https://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in) -php) – Nic3500
ええ、自分のルートクラスを作ってはいけません。ちょうどnikic/fastrouteを使用してください。 – Gordon
@Gordon私のアプリケーションは他のMVC(ルート>コントローラ)と似ていないので、これは役に立ちません。私のルートは特別なパラメータを持つファイルにリダイレクトされます。 EDIT:find half solution [^ /] + 多分私はあなたのすべての問題をあなたに見せようとしています。 –