doulang6013 2013-09-17 11:34
浏览 52
已采纳

PHP:如何在字符串中的某些关键字之前删除所有内容?

I have these type of results from a loop function,

C:/wamp/www/xxx/core/page/
C:/wamp/www/xxx/local/page/

But how can I trim off anything before core or local, so I get these only,

core/page/
local/page/

I use strstr, but I think it search for a fixed keyword only, I have two, many more keywords to match,

$string = 'C:/wamp/www/xxx/local/page/';
$output = strstr($string, '(local|core)');
var_dump($output);

I tried with preg_replace,

var_dump(preg_replace('#/(core|local)/.*#si', '/', $string));

it gives me the front part - C:/wamp/www/xxx/

  • 写回答

6条回答 默认 最新

  • dqqt31923 2013-09-17 11:40
    关注

    You can use preg_replace like this:

    $output = preg_replace('~^.*?((?:core|local).*$)~i', "$1", $string);
    

    or

    $output = preg_replace('~^.*?(?=core|local)~i', '', $string);
    

    If you want to match strictly up to the folder core or local, you can use this:

    $output = preg_replace('~^.*?/(?=(?:core|local)/)~i', '', $string);
    

    Viper-7 demo


    To your question:

    var_dump(preg_replace('#/(core|local)/.*#si', '/', $string));
    

    This will match /(core|local)/.* and replace it by /, which is not really what you're looking for, because you actually have to match what is before this. My first regex here is an example of that: it will match everything before (?:core|local) and then capture everything which comes afterwards into a capture group, which I'm referring to when using the backreference $1.

    And well, because of the votewar going here... I added the forward slashes in the match, and you will be using less memory if you don't use a capture group at all (but using a lookahead), hence how I came to the last regex.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应