-1

タグで終わるテキストがあり[br]、オプションでさらに[br]タグや空白文字が続きますが、他には何もありません。例えば:

bla blah d [br] fkjd fkdh fkd fks
sdkf skdfh djfh[br]
[br]
[br]

[br]次のように、そのタグの前にテキストを挿入したいと思います。

bla blah d [br] fkjd fkdh fkd fks
sdkf skdfh djfh [INSERTED TEXT][br]
[br]
[br]

[br]私の問題は、追加のタグや空白文字がいくつあるかわからないことです。

PHPでこれを行う簡単な方法はありますか?

4

3 に答える 3

1

preg_replaceを使ったものはどうですか?

preg_replace('!\[br\](\s+\[br\])+!i', 'INSERT$0', $subject);

正規表現はタグを探しており[br]、その後に必要に応じてある程度の空白とさらに[br]タグが続きます。[br]以下のタグはいくつでも指定できます。末尾の i は、大文字と小文字を区別しないことを示します。

コードパッドでこれを実行して表示できます

于 2013-01-29T19:00:32.383 に答える
0

私はphpの人ではありませんが、いくつかのjavescriptを知っています。問題を解決する方法を理解するのに役立つ場合があります。

str = str.replace(/(.*?)((<br>)*)$/,'$1' + insertedText + '$2')

これがあなたstrのテキストを含む文字列です。置換関数の最初のパラメーターは/(.*?)((<br>)*)$/、パターンに一致する正規表現です。 タグ(.*?)の前に表示されるテキストと一致します。任意の数に一致し、これらがテキストの最後に表示される ことを確認します。2番目のパラメーターは、実際に置き換えられた文字列です。元の文字列に挿入するテキストです。<br>((<br>)*)$<br><br>
insertedText

それが役に立てば幸い。説明が必要な場合は、遠慮なくコメントしてください。

于 2013-01-29T19:15:33.570 に答える
0

と を使用strpossubstrます。

基本的に、次のようなことをしたいと思うでしょう:

$str = 'bla blah dfkjd fkdh fkd fks sdkf skdfh djfh[br] [BR] [BR]';

$textToFind = '[br]';

$textToInsert = 'Hello World!';

// find the first $textToFind, ie '[br]';
$pos = strpos($str, $textToFind);

// cut from 0 to $pos, then insert the text, then $pos to the end of the string
$newStr = substr($str, 0, $pos) . $textToInsert . substr($str, $pos);

echo $newStr;
于 2013-01-29T19:00:51.943 に答える