0

说我有这个

searchpage-20/11111111111?node=15

我将如何设置一个正则表达式来替换整个字符串而不用担心

11111111111

只要其余匹配,就在中间。

我试过

searchallmp3-20/(.+?)\?node=
4

3 回答 3

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
于 2012-12-21T06:51:15.413 回答
1

你应该可以使用这个:

/searchpage-(\d+)\/(\d+)\?node=(\d+)/

示例用法:

preg_replace('/searchpage-(\d+)\/(\d+)\?node=(\d+)/', '', 'searchpage-20/11111111111?node=15');
于 2012-12-21T06:56:00.307 回答
1

你应该发布代码,看看你是如何调用正则表达式的,你还需要描述什么不起作用。

我假设您收到了一些错误消息,因为您在使用/正则表达式时没有对其进行转义,并且您的分隔符也是/

两种可能:

  1. 逃脱/

    /searchallmp3-20\/(.+?)\?node=/
    
  2. 使用另一个分隔符

    ~searchallmp3-20/(.+?)\?node=~
    

请参阅php.net 上的分隔符

我仍然没有得到你问题的替换部分。如果要删除 之前的数字?,则应捕获字符串的其他部分

 ~(searchallmp3-20/).+?(\?node=~)

并替换为

`$1$2`

这将导致

searchpage-20/?node=15

这是你想要的吗?

于 2012-12-21T06:57:27.917 回答