2

最も近い文の後/前に、テキストとして表示されるHTML文字列の中央。

例:

$str = 'First sentence. Second sentence! <a title="Hello. World">
        Third sentence. </a> Fourth sentence. Fifth sentence?';

$middle = strlen($str) / 2;

私がしたことは、、、、など.のすべての停止文字にキーワードを追加することですが、HTMLタグの外側の文字にのみ追加します。!?

$str = 'First sentence. Second sentence! <a title="Hello. World">
        Third sentence. </a> Fourth sentence. Fifth sentence?';
$str = preg_replace_callback("/(\.|\?|\!)(?!([^<]+)?>)/i",  function($matches){
   return $matches[1].'<!-- stop -->';
}, $str);

これにより、$strは次のようになります。

First sentence.<!-- stop --> Second sentence!<!-- stop --> <a title="Hello. 
World"> Third sentence.<!-- stop --> </a> Fourth sentence.<!-- stop --> Fifth
sentence?<!-- stop -->

<!-- stop -->では、その位置に最も近いサブ文字列を見つけて、その$middle前にテキストを挿入するにはどうすればよいですか?

$matches[1]文字列全体に対するpreg_replaceコールバック内の位置を見つける方法はありますか?そうすれば、$middleと比較できます

4

1 に答える 1

4
<?php
    $str    = 'First sentence.<!-- stop --> Second sentence!<!-- stop --> <a title="Hello. 
    World"> Third sentence.<!-- stop --> </a> Fourth sentence.<!-- stop --> Fifth
    sentence?<!-- stop -->';
    $str1   =   explode('<!-- stop -->',$str);
    $str1[round(sizeof($str1)/2)-2].="!Append text!";
    $glue=htmlentities('<!-- stop --/>');
    echo $str2  =   implode($glue,$str1);
?>

これはどのように?

于 2012-05-08T12:25:38.730 に答える