PHP:preg_replace()位于命名空间上
我试图从一个字符串中的PHP名称空间中获取作为字符串的父“元素”名称,ideia的作用是: 输入:PHP:preg_replace()位于命名空间上,php,regex,escaping,Php,Regex,Escaping,我试图从一个字符串中的PHP名称空间中获取作为字符串的父“元素”名称,ideia的作用是: 输入:\Base\Util\Review;所需输出:\Base\Util 我这里的主要问题是如何处理正则表达式中的反斜杠转义,到目前为止,我可以使其与普通斜杠一起工作: $ns = "/Base/Util/Review"; print preg_replace("#\/[^/]*$#", '', $ns); // Outputs => /Base/Util 谢谢。您可以不使用preg\u repl
\Base\Util\Review
;所需输出:\Base\Util
我这里的主要问题是如何处理正则表达式中的反斜杠转义,到目前为止,我可以使其与普通斜杠一起工作:
$ns = "/Base/Util/Review";
print preg_replace("#\/[^/]*$#", '', $ns);
// Outputs => /Base/Util
谢谢。您可以不使用
preg\u replace
$ns = "\Base\Util\Review";
print implode('\\', array_slice(explode('\\',$ns),0,-1));
另一种选择:
$ns = "\Base\Util\Review";
print substr($ns,0,strrpos($ns,'\\'));
您可以不使用
preg\u replace
$ns = "\Base\Util\Review";
print implode('\\', array_slice(explode('\\',$ns),0,-1));
另一种选择:
$ns = "\Base\Util\Review";
print substr($ns,0,strrpos($ns,'\\'));
试试这个
print preg_replace("#\\\[^\\\]*$#", '', $ns)
试试这个
print preg_replace("#\\\[^\\\]*$#", '', $ns)
您必须为每个文字反斜杠写四个反斜杠:
$regex = '#\\\\#'; // regex matching one backslash
您需要将每个
\
转义一次,以转义其在正则表达式中的特殊含义,并再次将每个\
转义一次,以转义其在PHP字符串文字中的含义。您必须为每个文字反斜杠编写四个反斜杠:
$regex = '#\\\\#'; // regex matching one backslash
您需要对每个\
进行一次转义,以转义其在正则表达式中的特殊含义,然后再次对每个\
进行一次转义,以转义其在PHP字符串文字中的含义。这应该可以:
$s = '\\Base\\Util\\Review';
$r = preg_replace('~\\\\[^\\\\]*$~', '', $s);
//=> \Base\Util
这应该起作用:
$s = '\\Base\\Util\\Review';
$r = preg_replace('~\\\\[^\\\\]*$~', '', $s);
//=> \Base\Util
感谢您详细解释这一点!感谢您详细解释这一点!我的代码上有类似的东西作为临时修复。无论如何,谢谢。我的代码上有类似的东西作为临时修复。无论如何,谢谢你。