2012-01-13 11 views
1

これは何も出力されない理由は何ですか?私はregexpとpreg_replaceの仕事をすることができません

URLの/ page/*部分を削除したいだけです。

私の目的は、文字列に長いURLが含まれていても常にhttp://www.sandrophoto.com/category/car-photography/を取得することです。

私が試した:

<?php 

$url1 = "http://www.sandrophoto.com/category/car-photography/page/1/"; 
$url2 = "http://www.sandrophoto.com/category/car-photography/page/2/"; 
$url3 = "http://www.sandrophoto.com/category/car-photography/"; 

$cleaned1 = preg_replace('/page/*', '', $url1); 
$cleaned2 = preg_replace('/page/*', '', $url2); 
$cleaned3 = preg_replace('/page/*', '', $url3); 

echo "$cleaned1 <br>"; 
echo "$cleaned2 <br>"; 
echo "$cleaned3 <br>"; 

?> 

答えて

1

を正規表現は、区切り文字を必要とし、あなたがいずれかを使用していません。さらに、スラッシュの後にアスタリスクがある場合は、「0以上のスラッシュ」を意味します。「スラッシュの後にゼロまたは改行以外の文字が続く」と表示される場合は、代わりに/.*となります。

preg_replace('/page/*', '', $url1); 

preg_replace('#/page/.*#', '', $url1); 

Reference

+0

ああする必要があります!どのように彼らは##についてPHPのヘルプページで何も言わない! –

+0

もう1つ質問がありますが、preg_replaceの使用に関するパフォーマンス上の問題はありますか? –

+0

@SandroDzneladze〜私が引用した参考文献を見ると、それらについて話しています〜)preg関数は同等のstr関数よりもかなり高価です。あなたがpreg_replaceの代わりにstr_replaceを使う方法を考えることができればそれは良いでしょう。この場合、私はそうする方法を見ることができません。 – Shad

関連する問題