2016-06-29 11 views
1

私は、指定されたURLから開始値が/で、終了値が/であるPHP関数を持っています。PHP preg_replaceスラッシュの間に置き換えます

たとえば、/page_###/http://my-domain.com/search/page_2/order_ascから削除します。 結果はhttp://my-domain.com/search/order_ascになります。

また、URLは次のようになります。http://my-domain.com/search/order_asc/page_2最後には終了はありません/です。

function stripDir($url, $mask){ 
    return preg_replace('/' . $mask . '[\s\S]+?/', '', $url); 
} 

上記の機能は、次のURLからpage_5を削除することができるはず...あなたの現在の正規表現で stripDir('http://my-domain.com/search/page_5/order_asc', 'page')stripDir('http://my-domain.com/search/order_asc/page_5', 'page')

+0

'$ mask'とは何ですか? – AbraCadaver

答えて

3

/のではなく、開始と終了の文字delimitersですあなたは探している。区切り文字を変更してみてください。

~/page_[\s\S]+?(/|\z)~ 

をしたり、機能ごと::末尾/はオプションです。また場合は、私が思うの正規表現を変更する必要があります

~/' . $mask . '[\s\S]+?(/|\z)~ 

はあなたのために働くだろう。

デモ:https://regex101.com/r/sH7bE2/3だけ修正区切り文字の
デモ:元の正規表現のhttps://regex101.com/r/sH7bE2/2
デモ:あなたがしたいとしているの出発のためにチェックし、/を終了されているため、再場所の1もhttps://regex101.com/r/sH7bE2/1

これらのうち/があります。

代替デモあり:https://regex101.com/r/sH7bE2/4

2
​​
+0

回答には、回答が必要です。 – chris85

関連する問題