0

"." で終わるすべての文に span タグを追加したいと思います。のように: 私の文字列:

「『口づけで人の子を裏切るのですか』とは言えませんでした」。私が裏切りを信じていない限り.

O/P:

"<span id="s1">I could not have said, ’Betrayest thou the Son of man with a kiss?’ unless I believed in betrayal.</span> <span id="s2">The whole message of the crucifixion was simply that I did not.</span>"

どのようにphpで可能ですか?

4

4 に答える 4

1

文を「.」で分解すると。上記のコードを変更したい。

$newText = "";
$count = 0;
foreach (explode(". ",$theText) as $part) {

   if(ctype_upper($part{0}))
   {
      $count++;
      $newText .= "<span id=\"s$count\">$part</span>";
  }

 }

略語などで機能することを願っています。

于 2013-06-10T06:56:09.723 に答える
0

このコードを試すと、spanタグの一意の ID が取得されます。

<?php
$str = "I could not have said, 'Betrayest thou the Son of man with a kiss?' unless I believed in betrayal. The whole message of the crucifixion was simply that I did not.";
$exp_str = explode(". ",$str);
$sentence = "<span id=\"s1\">";

$n = 2;
foreach($exp_str as $val) {
    $sentence .= $val.".</span> <span id=\"s$n\">";
    $n++;
}
$n = $n-1;
$sentence = substr($sentence,0,strpos($sentence,".</span> <span id=\"s$n\">"));
echo $sentence;
?>
于 2013-06-10T06:54:06.617 に答える
-2

preg_replace がこれを実行できるかどうかはわかりません (一意の ID のため)。それ以外の場合は、次のように手動で行うことができます。

$newText = "";
$count = 0;
foreach (explode(".",$theText) as $part) {
  $count++;
  $newText .= "<span id=\"s$count\">$part</span>";
}

しかし、略語などの文中のピリオドについてはどうでしょうか。explodeを aに置き換えてpreg_split、より良い結果を得ることができます。たとえば、ピリオドの直後の文字が文字または別のピリオドでない場合にのみ分割します。

preg_split("/\.[^\,\w]/",$theText);

または、次の文字が空白であることを確認してください。

preg_split("/\.\s/",$theText);
于 2013-06-10T06:36:36.163 に答える