试图抓住一个带有一个子串静态的字符串,一个动态

时间:2013-07-05 15:52:21

标签: php regex

我正在尝试找到获取动态子字符串的最佳方法,但在之后替换所有内容。

这就是我想要实现的目标:

{table_telecommunications}

子字符串{table_始终相同,唯一不同的是telecommunications}

我想抓住电信这个词,这样我就可以在MySQL表上搜索,然后用返回的内容替换{table_telecommunications}

我想过制作strpos然后explode等等。

但我认为使用正则表达式会更容易,但我没有创建正则表达式的技巧。

你能否给我最好的方法呢?

编辑:我说可能正则表达式是最好的方法,因为我需要找到这种格式的字符串,但第二部分是可变的,就像{table_*}

3 个答案:

答案 0 :(得分:1)

使用Regex。

<?php
    $string = "{table_telecommunications} blabla blabla {table_block}";
    preg_match_all("/\{table_(.+?)\}/is", $string, $matches);
    $substrings = $matches[1];

    print_r($substrings);
?>

答案 1 :(得分:1)

if (preg_match('#table_([^}]+)}#', '{table_telecommunications}', $matches)){
    echo $matches[1];
}

这是一个正则表达式的解决方案。爆炸可以做同样的事情:

$parts = explode('table_', '{table_telecommunications}');
echo substr($parts[1], 0, -1);

答案 2 :(得分:0)

$input = '{table_telecommunications}';
$table_name = trim(implode('_', array_shift(explode($input, '_'))), '}');

应该很快,不需要正则表达式。