Aqui está o meu código, que atualmente não está funcionando corretamente. Como posso fazer isso funcionar? Meu desejo é fazer a saída como uma string (claro que eu sei como "converter" array para string):
palavras alteradas, adicionadas e removidas para torná-lo
Código:
<?php
header("Content-Type: text/html; charset=utf-8");
$text = explode(" ", strip_tags("words altered added and removed to make it"));
$stack = array();
$words = array("altered", "added", "something");
foreach($words as $keywords){
$check = array_search($keywords, $text);
if($check>(-1)){
$replace = " ".$text[$check].",";
$result = str_replace($text[$check], $replace, $text);
array_push($stack, $result);
}
}
print_r($stack);
?>
Saída:
Array
(
[0] => Array
(
[0] => words
[1] => altered,
[2] => added
[3] => and
[4] => removed
[5] => to
[6] => make
[7] => it
)
[1] => Array
(
[0] => words
[1] => altered
[2] => added,
[3] => and
[4] => removed
[5] => to
[6] => make
[7] => it
)
)
Respostas:
1 para resposta № 1Sem mais explicações, é tão simples assim:
$text = strip_tags("words altered added and removed to make it");
$words = array("altered", "added", "something");
$result = $text;
foreach($words as $word) {
$result = str_replace($word, "$word,", $result);
}
- Não exploda sua string de origem
- Loop as palavras e substituir a palavra com a palavra e acrescentou vírgula
Ou abandonando a abordagem de loop:
$text = strip_tags("words altered added and removed to make it");
$words = array("altered", "added", "something");
$result = preg_replace("/(".implode("|", $words).")/", "$1,", $text);
- Crie um padrão implodindo as palavras no operador de alternância (OR)
|
- Substitua palavra encontrada com a palavra
$1
e uma vírgula
0 para resposta № 2
Você pode usar um iterator
// Array with your stuff.
$array = [];
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($iterator as $value) {
echo $v, " ";
}
0 para resposta № 3
Sua abordagem original deve funcionar com algunsmodificações. Faça um loop sobre as palavras na sequência explodida. Para cada um, se estiver na matriz de palavras para modificar, adicione a vírgula. Se não, não. Então a palavra modificada (ou não) vai para a pilha.
$text = explode(" ", strip_tags("words altered added and removed to make it"));
$words = array("altered", "added", "something");
foreach ($text as $word) {
$stack[] = in_array($word, $words) ? "$word," : $word;
}