で文字列を置き換えます3の代わりに2つの「サブURL」がありますが、動作しません。なぜですか?は、私はこのようなURLを持っているにpreg_replace
0
A
答えて
0
あなたの表現が適切に引用されていない正規表現で特別な意味を持つ文字が含まれているので、それが正しく動作しません。
、100%確実である。このようpreg_quote
を使用するには:
$url = 'http://Example.com/'
$pattern = preg_quote($url.'{word}/{word}/{word}', '/');
$pattern = str_replace($pattern, '{word}', '(\w+)');
$pattern = "/$pattern/i";
$replacement = $url.'$2/$3';
$appUrl= preg_replace($pattern, $replacement, $appUrl);
それ以外の場合は、単に物事が間違って取得するには余りにも簡単です。たとえば、すべては現在.
をExample.com
にエスケープしていないため、間違って表示されています。たとえば、次のような文字列を入力すると、これをテストできます。 http://Example!com
(!
は任意の文字を使用できます)。
さらに、二重引用符で囲まれた文字列リテラルの中に$2
などの文字列を使用しています。これは、IMHOは簡単に逃げるため、PHPではうまくありません。単なる引用して安全なものにしてください。
3
パターン内のスラッシュをエスケープするか、別のパターンデリミタを使用する必要があります。
$pattern = '/http:\/\/Example\.com\/(\w+)\/(\w+)\/(\w+)/i';
$pattern = '#http://Example\.com/(\w+)/(\w+)/(\w+)#i';
0
は次のようにスラッシュをエスケープ
:
$pattern = '/http:\/\/Example.com\/(\w+)\/(\w+)\/(\w+)/i';
$replacement="http://Example.com/$2/$3";
$appUrl= preg_replace($pattern, $replacement, $appUrl);
関連する問題
- 1. 私は、このリンクを持っているPHPのにpreg_replace
- 2. 私はこのようになりますURLを持っているjqueryの
- 3. 私はこのようなファイルを持っているリストに
- 4. は、私はこのようなテーブルを持っているSQL
- 5. は、私はこのようなテーブルを持っているSQL
- 6. は、私はこのようなセットアップを持っているナビゲーション
- 7. Grailsは私はこのようなリストを持っている
- 8. は、私はこのようなモデルを持っている
- 9. は、私はこのようなモデルクラスを持っている
- 10. 私はこのようにフォーマットURL持って試合
- 11. は、どのように私は、このようなデータを持っている
- 12. は、私はこのような文が持っている文
- 13. は、なぜ私は/私はこのようなコードを持っているC
- 14. 私はこのようなOBJECTIDを持っているのObjectID
- 15. 私はこのようなデータセットを持っている別の
- 16. iphone - 私はこのような構造を持っている
- 17. 私はこのようなXMLを持っているXSL
- 18. 私はこのような文字列を持っている
- 19. 私はこのようなコードを持っている
- 20. 私はこのようなXMLファイルを持っているC#
- 21. 私はこのような機能を持っているイテレータ
- 22. 私はこのようなリンクを持っているリンク
- 23. 私はサンプルデータセットを持っている 'このようなR
- 24. どのように私はこのようなURLでアプリケーションを持っているのmod_rewrite
- 25. 私はこのような何か持っているRubyの
- 26. は、私はこのようなレールにクエリを持って
- 27. は、どのように私は私がXController /アクションのようなURLを持っているかのことを知っているASP.netのコントローラのアクション
- 28. 私はこのような何か持っている1
- 29. は、私はこのようなコントローラーを持っている私のスポックテスト
- 30. URLは、私は私のURLを持っているPHP
'http:'の後に 'http:\/\ /'と '.com'とevery(\ w +)の後にスラッシュをエスケープすることを忘れないでください。 – Yaniro