2012-05-21 2 views
0

У меня есть строка и вы хотите удалить все после определенной «точечной» комбинации слов. Например:PHP + Изменить строку

This.Is.A.Test 

=> стал бы

This.Is.A 
+0

У меня очень похожая функция, работающая в javascript (split), и я искал аналогичную в PHP. Я думаю, что «взорваться» может быть хорошим способом, но я не смог понять это из примеров [здесь] (http://php.net/manual/en/function.explode.php). – Andrej

+0

Получите позицию «.A» с помощью strpos() и используйте substr(), чтобы получить результат строки. Использование руководства PHP – IEnumerable

+0

Вы пытаетесь удалить все после * определенного слова * точка + или сразу после слова * last * dot +? Что, если строка была '' This.Is.A.Test. "'? Должна ли она просто удалить последнюю точку или за ней следует слово? – Travesty3

ответ

1

$str = "This.Is.A.Test"; $str = substr($str, 0, strrpos($str, "."));

+1

Это был первый ответ, который я пробовал, и он работал отлично! – Andrej

0
$result = explode('.', $str, 4); 
array_pop($result); 
implode('.', $result); 
0

Я буду делать что-то очень простое, как:

<?php 

$string = 'This.Is.A.Test'; 

$parts = explode('.', $string); 
array_pop($parts); // remove last part 
$string = implode('.', $parts); 

echo $string; 

?> 
3

вы искали, чтобы удалить все после конкретных dot + слово или просто удалите последние do т + слово? Если вы ищете конкретное слово, попробуйте следующее:

$str = "This.Is.A.Test"; 
$find = ".A"; 
$index = strpos($str, $find); 
if ($index !== false) 
    $str = substr($str, 0, $index + strlen($find)); 
echo $str; // "This.Is.A" 

В ответ на @SuperSkunk:

Если вы хотите, чтобы соответствовать всем словам, вы могли бы сделать это:

$find = ".A."; 

$str = "This.Is.A.Test"; 
$index = strpos($str, $find); 
if ($index !== false) 
    $str = substr($str, 0, $index + strlen($find) - 1); 
echo $str; // "This.Is.A" 

$str = "This.Is.AB.Test"; 
$index = strpos($str, $find); 
if ($index !== false) 
    $str = substr($str, 0, $index + strlen($find) - 1); 
echo $str; // "This.Is.AB.Test" (did not match) 
+0

Он не работает с «This.Is.AB.Test». Смотрите мои правки. – SuperSkunk

+0

@SuperSkunk: В зависимости от того, что фактически ищет OP. См. Обновленный ответ. – Travesty3

+0

Просто понял, что вы получите странные результаты, если '$ find' на самом деле не найден в строке (это означает, что' strpos' вернет false). Обновленный ответ. – Travesty3

0

$ = StrPos поз ($ га ystack, ".A");

$ result = substr ($ haystack, 0, $ pos);

... что-то вроде этого.

Смежные вопросы