3

私は foreach を 2 つの配列で何時間も使用しようとしています。これが私のコードです:

function displayTXTList($fileName) {

    if (file_exists($fileName)) {
        $contents = file($fileName);
        $string   = implode($contents);
        preg_match_all('#\[\[(\w+)\]\]#u', $string, $name);
        preg_match_all('/style=(\'|\")([ -0-9a-zA-Z:]*[ 0-9a-zA-Z;]*)*(\'|\")/', $string, $name2);
        $i = 0;
        foreach ($name[1] as $index => $value) {
            echo '<br/>' . $value, $name2[$index];
        }
    }
}

displayTXTList('smiley2.txt');

これが私が得たものです:

sadArray
cryingArray
sunArray
cloudArray
raining
coffee
cute_happy
snowman
sparkle
heart
lightning
sorry
so_sorry
etc...

しかし、私はこれが欲しい:

sadstyle='background-position: -0px -0px;'
cryingstyle='background-position: -16px -0px;'
sunstyle='background-position: -32px -0px;'
etc...

実際のtxtファイルは次のとおりです。

[[sad]]<span class='smiley' style='background-position: -0px -0px;'></span>
[[crying]]<span class='smiley' style='background-position: -16px -0px;'></span>
[[sun]]<span class='smiley' style='background-position: -32px -0px;'></span>
[[cloud]]<span class='smiley' style='background-position: -48px -0px;'></span>
[[raining]]<span class='smiley' style='background-position: -64px -0px;'></span>
etc...

どうすればこれを行うことができますか?私はここにいるのは初めてなので、メモしないでください:/

4

1 に答える 1

2

配列を文字列として出力しています (したがって、Array出力では、配列を文字列に変換すると (たとえば を使用してecho)、PHP はそれを に変換します"Array")。代わりに、配列内の一致にアクセスします( のグループ 0 を想定しています。確認し$name2てください)。

echo '<br/>' .$value , $name2[0][$index];
                             ^^^--- was missing

function displayTXTList($fileName) {

    if (!file_exists($fileName)) {
        return;
    }

    $string = file_get_contents($fileName);

    $names  = preg_match_all('#\[\[(\w+)\]\]#u', $string, $matches) ? $matches[1] : array();
    $styles = preg_match_all(
        '/style=(\'|\")([ -0-9a-zA-Z:]*[ 0-9a-zA-Z;]*)*(\'|\")/', $string, $matches
    ) ? $matches[0] : array();

    foreach ($names as $index => $name) {
        $style = $styles[$index];
        echo '<br/>', $name, $style;
    }
}

displayTXTList('smiley2.txt');
于 2012-12-30T16:41:06.903 に答える