3

私はすでに半日ほどこれに苦労していて、答えを見つけることができないようです。初心者を助けてください。:)

中括弧で囲まれたいくつかの文で構成される文字列があります。これは次のようになります。

{スーパーデュパー余分なテキスト。}{素晴らしい別のテキスト!}{そしてここでまた行きます...}

今、私はそれを分割したいと思います。

。}{などのパターンを検索できることがわかったので、次のようにしました。

$key = preg_split('/[!?.]{1,3}\} \{/',$key);

しかし、このようにして区切り文字を失い、それらすべてを失いました。!?文末など。

私はそれをそのようにしようとしました:

$key = preg_split('/([!?.]{1,3}\} \{)/',$key, -1, PREG_SPLIT_DELIM_CAPTURE);
$sentences = array();

for ($i=0, $n=count($key)-1; $i<$n; $i+=2) {
$sentences[] = $key[$i].$key[$i+1]."<br><br>";
}

しかし、このコードはロードされないので、何か問題があります。しかし、何ですか?

前もって感謝します。

4

3 に答える 3

5

これを分割する必要はありませんpreg_match()。代わりに呼び出してください。一致したグループは配列になります。内()でグループ化された式[^}]+は、次の。までのすべての文字に一致しますが、これは含まれません}。必要な出力値は$matches[1]サブアレイ内にあります。

$input = "{Super duper extra text.} {Awesome another text!} {And here we go again...}";
$matches = array();
preg_match_all('/\{([^}]+)\}/', $input, $matches);
print_r($matches);

Array
(
    [0] => Array
        (
            [0] => {Super duper extra text.}
            [1] => {Awesome another text!}
            [2] => {And here we go again...}
        )

    [1] => Array
        (
            [0] => Super duper extra text.
            [1] => Awesome another text!
            [2] => And here we go again...
        )

)
于 2012-06-13T17:38:18.910 に答える
2

私はあなたがpreg_split()これに必要だとは思わない。あなたが説明することから、それは次のように聞こえます:

 $array = explode('} {', trim($string, '{}'));

...仕事をします。

于 2012-06-13T17:39:55.730 に答える
0

これが機能していることを試してください。中央の中括弧がスラッシュを前に付ける前に使用してください。

$keywords = preg_split("/[\{\}]/", "{hypertext} language, programming");
print_r($keywords);
于 2014-01-10T13:12:12.180 に答える