Взорваться в одну линию - PullRequest
       13

Взорваться в одну линию

0 голосов
/ 17 февраля 2012

Я хочу разбить текст слово за словом, но в одну строку. Не строка за строкой. Я получил это:

$someWords = "Please don't blow me to pieces."; 
$test = '';
$wordChunks = explode(" ", $someWords);
for($i = 0; $i < count($wordChunks); $i++){
    echo "Piece $i = $wordChunks[$i] <br />";
    $test .='<a href="test.php?id='.$wordChunks[$i].'">'.$wordChunks[$i].'</a> <br />';
} 

и это:

 echo $test;

С этим это выглядит так:

Please
don't
blow
me
to
pieces

Но я хочу это так:

Please don't blow me to pieces

И каждое слово имеет ссылку.

Ответы [ 6 ]

2 голосов
/ 17 февраля 2012

Удалите тег <br />

echo "Piece $i = $wordChunks[$i] ";
$test .='<a href="test.php?id='.$wordChunks[$i].'">'.$wordChunks[$i].'</a> ';
1 голос
/ 17 февраля 2012

<br/> означает разрыв строки. Поэтому, если вы не хотите, чтобы между каждым словом была новая строка, не ставьте <br/> между каждым словом.

Итак, вместо

$test .='<a href="test.php?id='.$wordChunks[$i].'">'.$wordChunks[$i].'</a> <br />';

сделать

$test .='<a href="test.php?id='.$wordChunks[$i].'">'.$wordChunks[$i].'</a>';
1 голос
/ 17 февраля 2012

Причина, по которой он разделяется на новые строки, заключается в том, что вы помещаете их в него.Просто удалите <br> s:

$test .='<a href="test.php?id='.$wordChunks[$i].'">'.$wordChunks[$i].'</a>';

EDIT

Вы можете сделать это в одной строке с помощью регулярного выражения:

$test = preg_replace(
  '/(\S+)(\s*)/', // Find every collection of non-whitespace characters, which may or may not be followed by whitespace
  '<a href="test.php?id=$1">$1</a>$2', // Replace it with a link and append whitespace, if any
  htmlspecialchars($someWords, ENT_QUOTES) // pass the input string through htmlspecialchars() to avoid broken HTML
);

посмотреть, как работает

0 голосов
/ 17 февраля 2012

Попробуйте это:

$someWords = "Please don't blow me to pieces.";
$test = '';
$wordChunks = explode(" ", $someWords);
for($i = 0; $i < count($wordChunks); $i++){
    $test .='<a href="test.php?id='.$wordChunks[$i].'">'.$wordChunks[$i].'</a>&nbsp;';
} 
echo $test;
0 голосов
/ 17 февраля 2012

Вы включаете разрывы строк вручную.Просто удалите <br />:

$someWords = "Please don't blow me to pieces."; 
$test = '';
$wordChunks = explode(" ", $someWords);
for($i = 0; $i < count($wordChunks); $i++){
    echo "Piece $i = $wordChunks[$i] <br />";
    $test .='<a href="test.php?id='.$wordChunks[$i].'">'.$wordChunks[$i].'</a>';
} //                                                                         ^^^
0 голосов
/ 17 февраля 2012

Используйте для этого array_mapimplode, чтобы склеить все обратно в строку):

$someWords = "Please don't blow me to pieces."; 
$words = explode(" ", $someWords);
$links = array_map(
    $words,
    function($w) { return '<a href="test.php?id='.$w.'">'.$w.'</a>'; });
echo implode('', $links);

Вы можете сделать это в одну строку, если не возражаете против читабельности.

...