说我有这个
searchpage-20/11111111111?node=15
如何设置正则表达式来替换整个字符串而不用担心
11111111111
只要其余的匹配就在中间。
我试过
searchallmp3-20/(.+?)\?node=
答案 0 :(得分:1)
怎么样
<?php
$search = 'searchpage-20/11111111111?node=15';
$reg = '#(searchpage-\d+/)\d+(\?node=\d+)#';
echo preg_replace($reg, '${1}blah${2}', $search);
<强>输出强>
searchpage-20/blah?node=15
答案 1 :(得分:1)
你应该能够使用它:
/searchpage-(\d+)\/(\d+)\?node=(\d+)/
使用示例:
preg_replace('/searchpage-(\d+)\/(\d+)\?node=(\d+)/', '', 'searchpage-20/11111111111?node=15');
答案 2 :(得分:1)
你应该发布代码,看看你如何调用正则表达式,你还需要描述,什么不起作用。
我假设您收到一些错误消息,因为您使用的是/
,而没有在正则表达式中转义它,而且您的分隔符也是/
两种可能性:
逃离/
/searchallmp3-20\/(.+?)\?node=/
使用其他分隔符
~searchallmp3-20/(.+?)\?node=~
我仍然没有得到你问题的替换部分。如果您要删除?
之前的数字,则应捕获字符串的其他部分
~(searchallmp3-20/).+?(\?node=~)
并替换为
`$1$2`
这将导致
searchpage-20/?node=15
这是你想要的吗?