正则表达式使用替换字符串替换

时间:2014-05-30 08:46:34

标签: php regex

我有这样的字符串

[Ljava.lang.String;
[Ldummy.class.Here;
[Lanother.unknown.Class;

我应使用什么正则表达式将[L;替换为<span>[]</span>
并使它看起来像这样

<span>java.lang.String[]</span>
<span>dummy.class.Here[]</span>
<span>another.unknown.Class[]</span>

我想要的是使java数组类字符串表示更加人性化 我听说过1美元或类似的东西,但我找不到更多的信息,因为我不知道它是什么

4 个答案:

答案 0 :(得分:1)

如果你想使用普通的旧PHP而不是正则表达式,这里有一个简单的代码片段可以完全满足你的需要 - 你可以修改它而不必排序对你没有意义的正则表达式:< / p>

<?php

    $stringArray=array(
        '[Ljava.lang.String;',
        '[Ldummy.class.Here;',
        '[Lanother.unknown.Class;'
        );

    foreach($stringArray as $val)
    {
        $output=$val;
        if($val[0].$val[1]=='[L')
        {
            $output="<span>".substr($val,2);
        }

        if(substr($output,-1)==';')
        {
            $output=substr($output,0,strlen($output)-1).'</span>';
        }

        echo $output.'<br>';
    }

?>

输出:

<span>java.lang.String</span>
<span>dummy.class.Here</span>
<span>another.unknown.Class</span>

答案 1 :(得分:1)

$strings = "[Ljava.lang.String;
[Ldummy.class.Here;
[Lanother.unknown.Class;";

$strings = preg_replace('/\[L([A-Za-z\.]+);/', '<span>$1[]</span>', $strings);
echo $strings;

输出:

$ php foo.php
<span>java.lang.String[]</span>
<span>dummy.class.Here[]</span>
<span>another.unknown.Class[]</span>

答案 2 :(得分:0)

这应该这样做:

$new_content = preg_replace('#^\[L(.*);\s*$#m', '<span>$1[]</span>', $content);

在这里演示:http://sandbox.onlinephpfunctions.com/code/8f0de08b5ba0882db2d98d99cdd961b9aebab074

答案 3 :(得分:0)

您可以使用:

$result = preg_replace('~\[L([^;]+);~', '<span>$1[]</span>', $txt);

其中[^;]+匹配所有不是&#34;;&#34;