-1

文字列から文字を置き換えて他のものを入れようとしましたが、これはpreg_replace_callback関数を使用するため、問題はこの関数が元のテキストの順序を変更し、異なる結果を表示することです

たとえば、文字列が次の場合:

皆さん、こんにちは [1-2-3] これは 1 つのテストです [4-5-6-7-8] --- > 元のテキスト

スクリプトは [ ] を検索し、このコンテンツを [ ] で他のテキストから分離しますが、ここに置くように表示します。

1-2-3 4-5-6-7-8 こんにちは皆さんこれは 1 つのテストです --- > 悪い結果

正しい順序の場合、[ ] のない最初の順序です。

みなさん、こんにちは 1-2-3 これは 1 つのテストです 4-5-6-7-8

私が作成するスクリプト:

<?php

$text = " This is a test [gal~ruta~100~100] This is other test [gal~ruta2~100~100]";

function gal($matches)
{

global $text;

$exp=explode("~",$matches[1]);

$end=str_replace($matches[1],$a,$text);

if ($exp[0]=="gal")
{
$a="".$exp[1]."".$exp[2]."".$exp[3]."";
echo $a;
}


}


echo preg_replace_callback(
"/\[(.*?)\]/",
"gal",
$text);

?>

みんな助けてくれてありがとう

4

1 に答える 1

1

元の文字列に置き換えられるコールバックから何かを返す必要があります。echoこれは、実行順に値を出力に直接送信します。

ただし、数字を囲む括弧を削除するためのコールバック関数さえ必要ないように思えます。

$str = preg_replace("/\[(.*?)\]/", "$1", $str);

コードパッド

于 2012-11-28T04:21:10.353 に答える