mb_ereg_replace获取匹配项

时间:2011-11-21 14:54:25

标签: php preg-replace

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

有可能得到这个吗?

例如:

$string = "test text 12345"; 

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

我想知道,“文字”和“测试”是否匹配?或者正在调用preg_match绝对必要吗?

6 个答案:

答案 0 :(得分:1)

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

请参阅http://php.net/manual/en/function.preg-replace.php

$string = "test text 12345";
$count = 0;
$string = preg_replace('text', 'test2', $string, -1, $count);
echo $count; // 1

答案 1 :(得分:0)

嗯......您可以使用preg_replace_callback()代替,这样您就可以为每场比赛调用一个自定义函数。然后你就可以“看到”比赛并以你想要的方式替换它。

答案 2 :(得分:0)

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

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

 if (strstr($container,$findthis))
    echo $findthis.' is present';
 else
    echo 'Not found';
 }

答案 3 :(得分:0)

使用preg_match()进行测试,然后使用preg_replace(),如果您想解决preg_replace_callback()问题,这也是一个解决方案。

答案 4 :(得分:0)

如果你想做的就是:

  1. 替换为简单的字符串(例如,texttest2
  2. 找出是否有任何更换。
  3. 在这种情况下,我只需使用str_replace()进行替换,然后使用strcmp()来判断字符串是否已更改(即已进行替换。)

答案 5 :(得分:0)

试试这个:

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

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