我正在尝试从字符串中的PHP命名空间中获取父“元素”名称作为字符串,ideia是这样做的:
输入:\Base\Util\Review
;期望的输出:\Base\Util
;
我的主要问题是如何处理正则表达式中的反斜杠转义,到目前为止我可以使用正常的斜杠:
$ns = "/Base/Util/Review";
print preg_replace("#\/[^/]*$#", '', $ns);
// Outputs => /Base/Util
谢谢。
答案 0 :(得分:1)
您可以在没有preg_replace
$ns = "\Base\Util\Review";
print implode('\\', array_slice(explode('\\',$ns),0,-1));
另一种选择:
$ns = "\Base\Util\Review";
print substr($ns,0,strrpos($ns,'\\'));
答案 1 :(得分:1)
试试这个
print preg_replace("#\\\[^\\\]*$#", '', $ns)
答案 2 :(得分:1)
您必须为每个文字反斜杠编写四个反斜杠:
$regex = '#\\\\#'; // regex matching one backslash
你需要转义每个\
一次以逃避其在正则表达式中的特殊含义,并再次转义每个\
一次以逃避其在PHP字符串文字中的含义。
答案 3 :(得分:1)
这应该有效:
$s = '\\Base\\Util\\Review';
$r = preg_replace('~\\\\[^\\\\]*$~', '', $s);
//=> \Base\Util