0

PHPで正規表現を使用して、文字列の最初と最後から一重引用符または二重引用符を削除しようとしていますが、文字列の両端に存在する場合にのみ削除します。そうすれば、測定値として使用された見積もりが失われることはありません。

例えば:

"3' 7"" - would remove quotes
3' 7" - would not remove

substrこれは、ロジックを使用して簡単に実行できますがtrim、正規表現を使用して一度に実行したいと思います。

4

4 に答える 4

3

一重引用符または二重引用符を置き換えて、それらが一致する必要があることを確認するには、次のようにします。

preg_replace('/^([\'"])(.*)\\1$/', '\\2', $value);
于 2012-12-28T23:29:53.710 に答える
1
preg_replace('/^"(.*)"$/', '$1', '"3' 7""');
于 2012-12-28T23:24:57.077 に答える
1
preg_replace('/^"(.*)"$/', '$1', '"3\' 7""');
于 2012-12-28T23:26:25.027 に答える
0

それを行う正規表現の方法は、引用をキャプチャし、後でそれを参照することです。引用符内のものもキャプチャして、代わりに使用できるようにする必要があります。

$x = array('3\' 7"', '\'3\' 7"\'', '"3\' 7""');
foreach ($x as $y)
    echo preg_replace('/^(["\'])(.*)\\1$/', '$2', $y), '<br>';
die;

さて、正規表現の方法は大丈夫ですが、それを「手動で」行うことは、おそらく少し理解しやすく、将来的に維持するのが少し簡単です。

function remove_quotes($string)
{
    $length = strlen($string);

    if ($length > 2)
    {
        foreach (array('\'', '"') as $quote)
        {
            if ($string[0] === $quote && $string[$length-1] === $quote)
            {
                $string = substr($string, 1, -1);
                break;
            }
        }
    }
    return $string;
}
$x = array('3\' 7"', '\'3\' 7"\'', '"3\' 7""');
foreach ($x as $y)
    echo remove_quotes($y), '<br>';
die;
于 2012-12-28T23:38:47.043 に答える