字符串模式匹配


string pattern matching

可能重复:
PHP如何删除字符串末尾和开头的额外字符

我有这样的字符串:

输入:

/help/detail.php
/page1/
page2/
/page3

输出:

help/detail.php
page1
page2
page3

如果字符串的开头或结尾存在/,我希望将其删除。/在字符串中间是可以的。我总是困惑于创建这些类型的匹配字符串。

感谢

正则表达式如下:

preg_replace('^/+|/+$', '', $string);

但实际上你并不需要它,trim()会在这种情况下完成任务:

trim($string, '/');

以"sed"形式提供给您:s/^[/]*(.*)[/]*$/$1/将删除字符串前面和后面的任意数量的斜杠。内部斜线将保持不变。

您可能正在查找^(匹配字符串开头(和$(匹配字符串结尾(。

尝试这个

 echo trim('/page1/' ,'/');

您可以使用strpos、strrpos和substr。

$string ='/help/detail.php'
## begin of string
$len=strlen($string);
if( strpos($string,'/') == 0 )
    $string=substr($string,1,$len);
## end of string
$len=strlen($string);
if( strrpos($string,'/') == ($len-1) )
    $string=substr($string,0,-1);