无论中间文本php如何,简单的正则表达式替换

时间:2012-12-21 06:46:40

标签: php regex replace preg-replace

说我有这个

searchpage-20/11111111111?node=15

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

11111111111
只要其余的匹配就在中间

我试过

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

3 个答案:

答案 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)

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

我假设您收到一些错误消息,因为您使用的是/,而没有在正则表达式中转义它,而且您的分隔符也是/

两种可能性:

  1. 逃离/

    /searchallmp3-20\/(.+?)\?node=/
    
  2. 使用其他分隔符

    ~searchallmp3-20/(.+?)\?node=~
    
  3. 请参阅Delimiters on php.net

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

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

    并替换为

    `$1$2`
    

    这将导致

    searchpage-20/?node=15
    

    这是你想要的吗?