2011-12-22 16 views
-1

PHP検索があり、正規表現を置き換えると問題が起こります。私はhttp://www.regextester.com/index2.htmlでプレグとしてテストするために正規表現テスターを使用しましたが、そこで動作しますが、私が取り組んでいるPHPスクリプトの中で目的の結果を得ることができません。ここで正規表現テスターで正常に動作しているように見えても、PHPの正規表現が正しく生成されない

は、正規表現のためのコードです:

$result = preg_replace('/^prescriptions-a-z\/prescriptions-([a-z]{1}-[a-z]{1})\/([-a-z0-9_]*)\.html$/', '$1 $2', $url); 

$のURLの文字列がしかし、それは空の結果を

prescriptions-a-z/prescriptions-a-c/atopica-capsules.html 

と結果が

a-c atopica-capsules 

でなければなりません戻っていますされます。なぜこれが私が望む出力を生み出していないのか、誰にでも明かりを投げられますか?

+0

期待どおりに動作しているように見えます - http://codepad.viper-7.com/avGQP8 - $ urlには期待通りのものが含まれていることを確認してください。スペースや返品やケースの違いはありません –

+0

。 – Pawka

+0

@マークベイカーはい。私が手動で$ url変数を手動で定義するとうまくいきます - いくつかの以前のコードはURLの一部を取り除きますので、いくつかの空白や何かが追加されているかどうか確認します。以前の私は文字列全体を小文字に変換するので、大文字と小文字の違いはありません。 –

答えて

0

あるべき正しいではありません私はそれが何であるかを理解したコードを、以前の正規表現が間違っていたので、コードは最初に実行されていませんでした。 D'oh!それは今でもうまくいっています。助けてくれてありがとう!

-1
<?php 
$url = 'prescriptions-a-z/prescriptions-a-c/atopica-capsules.html'; 
$result = preg_replace('/^prescriptions-a-z\/prescriptions-([a-z]{1}-[a-z]{1})\/([-a-z0-9_]*)\.html$/', '\\1 \\2', $url); 
echo $result; 

言及がない$\\文字を使用し、あなたはあなたの置き換えmanual

+0

リンク先のマニュアルページの例1は、\\ 1ではなく両方とも有効です。 –

+0

@ MarkBaker:はい、何とか '\'しか動作していません。 – RageZ

+0

@MarkBaker:実際には$も動作します。それは動作していないことを確認しますか? – RageZ

-2

機能を確認することができます

'$1 $2'が戻って行くと見て後'\\1 \\2'

+1

いつですか?私は '$ '構文を何年も使っています。違いはなんですか? –

+0

PHPはそう言います。 RTFM http://php.net/manual/en/function.preg-replace.php – Richard

+0

@リチャード - 私はRTFMを持っています...そのページのどこに$ 1が許容された使用法ではないかを正確に示してから、例の理由を説明してください1はそのページの\\ –

関連する問題