Php mb_ereg_替换获取匹配项

Php mb_ereg_替换获取匹配项,php,preg-replace,Php,Preg Replace,我只是想知道,preg_replace函数的替换是什么 有可能得到这个吗 例如: $string = "test text 12345"; $string = mb_ereg_replace('#text|test#', '$1-test2',$string); 我想知道,“文本”和“测试”是否匹配?还是说打电话给preg_match绝对必要 嗯……您可以使用preg\u replace\u callback(),这将使您能够为每个匹配调用一个自定义函数。然后,您就可以“查看”匹配项,并

我只是想知道,preg_replace函数的替换是什么

有可能得到这个吗

例如:

$string = "test text 12345"; 

$string = mb_ereg_replace('#text|test#', '$1-test2',$string); 

我想知道,“文本”和“测试”是否匹配?还是说打电话给preg_match绝对必要

嗯……您可以使用
preg\u replace\u callback()
,这将使您能够为每个匹配调用一个自定义函数。然后,您就可以“查看”匹配项,并以您想要的方式替换它。

如果它不是您试图查找的模式,而只是字符串中的文本,您可以使用
strstr

 $findthis = "Apple";
 $container = "Apple Orange Kiwi";

 if (strstr($container,$findthis))
    echo $findthis.' is present';
 else
    echo 'Not found';
 }
使用
preg\u match()
进行测试,然后使用
preg\u replace()
如果您想在
preg\u replace\u callback()
中遇到问题,这也是一种解决方案。

如果您只想做以下事情:

  • 替换为简单字符串(例如,
    text
    → <代码>测试2)和
  • 看看是否有什么东西被替换了

  • 在这种情况下,我只需使用replace,然后告诉字符串是否已更改(即进行了替换)。

    您可以通过引用将count变量传递到preg_replace,该变量将返回发生的匹配/替换数

    试试这个:

    $string = 'test text 12345'; 
    if ($string != ($replaced = preg_replace('/text/', 'test2', $string))) {
        echo 'text was replaced';
    }
    

    虽然如果您真的不需要preg_replace,您应该使用strstr或stristr。

    谢谢,但我使用的是mb_ereg_replace,我找不到mb_ereg_replace_回调函数……您要匹配还是替换?或者你想知道它是否真的取代了什么?如果是这样,您可以比较替换前后的$string。我要替换,并匹配替换。。。但对我来说,调用replace和match函数看起来不太好,因为我认为它们做的是相同的=>匹配注意,这个答案是针对原始preg_replace问题的谢谢,但它没有提供匹配的短语。:)@玛卡,我不太明白。你知道匹配的短语是什么:
    test
    。仅供参考,我建议您删除此问题,因为您对其所做的更改已使所有给出的答案无效。
    $string = 'test text 12345'; 
    if ($string != ($replaced = preg_replace('/text/', 'test2', $string))) {
        echo 'text was replaced';
    }