2012-11-06 57 views
0

下面是代碼:的preg_replace與正則表達式和正斜槓

$string = "/My-Item-Here-p/sb-p36abbg.htm"; 
$str = preg_replace('/^.*-p\s*/', '', $string); 
$str = substr($str, 1); 
echo $str; 

該吐出6abbg.htm,我想它必須只之前刪除一切,包括「-p /」(注意用正斜槓)。

所以我想它吐出sb-p36abbg.htm

+0

preg_replace是必須的嗎?或者你打開其他選項? – George

+0

然後添加它。如果你不想保留你的分隔符,可以逃脫。 – mario

+0

所有你需要的是'echo basename($ string);' – Baba

回答

1

試試這個正則表達式:/^.*-p\/(.*)$/

<?php 
$sourcestring="/My-Item-Here-p/sb-p36abbg.htm"; 
echo preg_replace('/^.*-p\/(.*)$/','\1',$sourcestring); 
?> 

Codepad link.

+0

的一個實例這似乎是正常工作,我很感激。 – ToddN

0

我認爲沒有理由讓你在特定情況下使用正則表達式。只需使用strpossubstr即可。

$string = "/My-Item-Here-p/sb-p36abbg.htm"; 
$str = substr($string, strpos($string, '-p/') + 3); 
echo $str; 

考慮到使用不是真正需要它們的正則表達式會浪費計算資源。

0
$string = "/My-Item-Here-p/sb-p36abbg.htm"; 
$str = preg_replace('/^.*?(?=-p\/)', '', $string);