2

掘り下げた後、私はまだこれに近づきません。

このphpによって生成されたhtml文字列があります...

これにより、複数の空白がすべて取り除かれます。

たとえば、上記はこの文字列を以下に出力し、他のノードは含まれず、テキストのみ...

 1 Lorem ipsum 1.1 Dolor sit amet, consectetur adipiscing elit. 1.2 Nulla non felis enim, a lacinia erat. 1.3 Donec ullamcorper feugiat lobortis. 1.4 Vivamus congue libero ut augue consectetur ultricies vitae eget quam. 2 Suspendisse 2.1 Ultrices volutpat tempus. 2.2 Aenean ullamcorper porta lacus, ut vehicula tortor dapibus hendrerit. 2.3 Proin condimentum est eget arcu mollis consequat. 2.4 Ut malesuada posuere lobortis. 2.5 Suspendisse gravida adipiscing nunc, et vehicula nunc tincidunt nec. 3 Tincidunt 3.1 Sed eget porta ligula. 3.2 Morbi vitae augue in eros tincidunt tincidunt consequat interdum dui. 3.3 Phasellus ante velit, venenatis et dignissim eu, semper vitae lectus. 3.4 Maecenas feugiat adipiscing tortor, non porttitor sem condimentum luctus. 3.5 Curabitur pharetra gravida ornare. 3.6 Donec tortor erat, posuere in ullamcorper eget, posuere sit amet purus. 3.7 Duis feugiat sollicitudin odio, ac molestie nulla elementum non. 4 Vestibulum 4.1 Tempor lectus sit amet purus condimentum nec condimentum dui viverra. 4.2 Duis sodales molestie fermentum. 4.3 Maecenas euismod, lacus ut ullamcorper condimentum, erat felis sodales lectus, a sodales ipsum lectus eu lorem. 4.3 Vivamus ac rhoncus est.


私はすべての数字( 1 、 1.2 、 1.3 など)を見つけ出して、それらをスパンでラップしようとしています。

私はphpを試しましたが、あまり運がありませんでした...

$phrase  = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy   = array("pizza", "beer", "ice cream");

$newphrase = str_replace($healthy, "<span>".$yummy."</span>", $phrase);

echo $newphrase;

上記のphpはこれを出力しています...You should eat Array, Array, and Array every day.


だから、jqueryを試すことができると思ったのですが、正しくアプローチしているかどうかはわかりません.私のコードをお願いします...

var points = [' 1 ',' 1.1 ',' 1.2 ',' 1.3 ',' 1.4 ',' 2 '];

$("p").html(this.html().replace( points,'<span>' + points + '</span>'));

私は軌道から外れていると思いますが、文字列の特定のビットをピンポイントで指すことについてはあまり見つけられません。

私は私のjQueryのフィドルを作りました... http://jsfiddle.net/XmU6p/


その間、私はまだこの問題を追求するつもりです。しかし、誰かが私がどこで間違っているのかについていくつかの指針を共有できれば、私は最も感謝しています. ありがとう

4

6 に答える 6

2

これは PHP でも実行できます。配列から文字列への変換があります ( "<span>$yummy</span>")。$yummyスパンを追加するには、ループする必要があります。

array_walk($yummy, function ($elem) { return "<span>$elem</span>"; });

次に、次のことができます。

$newphrase = str_replace($healthy, $yummy, $phrase);
于 2013-01-27T14:54:31.103 に答える
2

どちらの場合も、値の配列を実際にループして、各値を置換する必要があります。私は PHP にあまり詳しくないので、jQuery を使用して例を作成しました。これを試して:

var points = [' 1 ',' 1.1 ',' 1.2 ',' 1.3 ',' 1.4 ',' 2 '];
$.each(points, function(i, val) {
    var $p = $('p');
    $p.html($p.html().replace(val, '<span>' + val + '</span>'));
});

更新されたフィドル

于 2013-01-27T14:43:01.783 に答える
0
foreach ($healthy as $key => $food) {
 $newphrase = str_replace($food,'<span>'.$yummy[$key].'</span>',$phrase);
}


echo $newphrase;
于 2013-01-27T14:56:55.713 に答える
0

PHP では、ループやウォークは必要ありません。str_replace または preg_replace を使用できます。どちらも配列を処理できます。

<?php
  $phrase  = "You should eat fruits, vegetables, and fiber every day.";
  $yummy   = array("<span>pizza</span>", "<span>beer</span>", "<span>ice cream</span>");

  // regex variant...
  $healthy = array('/fruits/i', '/vegetables/i', '/fiber/i');      
  $newphrase = preg_replace($healthy, $yummy, $phrase);
  echo $newphrase;

  // string variant...
  $healthy = array('fruits', 'vegetables', 'fiber');
  $newphrase = str_replace($healthy, $yummy, $phrase);
  echo $newphrase;
?>

マッチングの柔軟性を高めるために、正規表現のバリアント (preg_replace) を使用したいと思います。

于 2013-01-27T14:57:34.910 に答える
0

PHP の例が失敗する理由は$yummy、それが配列で"<span>"あり、文字列であるためです。そのため、この行"<span>".$yummy."</span>"は配列を string に変換し、その"Array"両側に他の文字列を追加して、それを単一の文字列として返します。

必要なのは に与える配列なので、各要素の周りにとを含む新しい配列をstr_replace(たとえば、foreachループまたはを使用して) 作成する必要があります。最終的には次のような結果になります。array_map()"<span>""</span>"$yummyWithSpan = array("<span>pizza</span>", "<span>beer</span>", "<span>ice cream</span>");

別のアプローチとして、 andpreg_replace_callback()を追加するコールバック関数を使用してを使用することもできますが、その場合、正規表現がどのように機能するかについての実用的な知識が必要になります。"<span>""</span>"

于 2013-01-27T14:57:41.473 に答える
0

PHP:

$phrase  = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy   = array("pizza", "beer", "ice cream");

foreach ($healthy as $key => $value) {
  $phrase = str_replace($value, "<span>".$yummy[$key]."</span>",$phrase);
}

echo $phrase;

出力:

You should eat <span>pizza</span>, <span>beer</span>, and <span>ice cream</span> every day.
于 2013-01-27T14:59:44.097 に答える