Corey
Corey

Reputation: 33

remove word from string by position from input

EXAMPLE:

input = 2

text = aa bb cc

Will become: aa cc

The input for position is $_POST['position']

i have

$words = explode(" ", $_POST['string']);
for ($i=0; $i<count($words); $i++){ 
    echo $words[$i] . " ";
}

Upvotes: 0

Views: 216

Answers (5)

vitorsdcs
vitorsdcs

Reputation: 692

$input = 2;
$words = explode(" ", $_POST['string']);
unset($words[$input-1]);
$words = implode(" ", $words);
echo $words;

Upvotes: 0

War10ck
War10ck

Reputation: 12508

This sounds like a homework question. I'll take a stab at it though:

Code:

<?php
    $string = trim($_POST['string']);
    $parts = explode(" ", string);
    $newString = "";
    $position = intval($_POST['position']);
    for($a = 0; $a < count($parts); $a++) {
        if($a != $position) { // or $a != ($position - 1) depending on if you passed in zero based position
            $newString = $newString . $parts[$a] . " ";
        }
    }
    $newString = trim($newString);

    echo "Old String: " . $string . "<br />";
    echo "New String: " . $newString;
?>

Output:

Old String: aa bb cc
New String: aa cc

Upvotes: 0

bcrawford
bcrawford

Reputation: 68

Foreach loops tend to make it a little easier to understand (IMO). Looks cleaner too.

$pos = 2;
$sentence = explode(" ", $_POST['string']);

foreach ($sentence as $index => $word) {
    if ($index != $pos - 1) {
        $result .= $word . ' ';
    }
}

echo $result;

Upvotes: 0

HamZa
HamZa

Reputation: 14921

Pulling out the big guns REGEX !!!

$string = 'aa bb cc dd';
$input = 2;

$regex = $input - 1;
echo preg_replace('#^((?:\S+\s+){'.$regex.'})(\S+\s*)#', '$1', $string);

Output: aa cc dd

Upvotes: 0

ben
ben

Reputation: 1936

$to_remove = 2;
$text = "aa bb cc";

$words = explode(' ', $text);
if(isset($words[$to_remove -1])) unset($words[$to_remove -1]);
$text = implode(' ', $words);

Upvotes: 2

Related Questions